Node.js(EXPRESS)で、MySQLにINSERT、SELECTできるコードを書きました。
トップページでテーブルのデータを表示、insertページではフォーム送信後にトップページにリダイレクトするようにしました
しかし、毎回リロードを挟まないと、起動時には何も表示されない、insert後は新しいデータが表示されないという感じになってしまいました
nodeを触るのは今日が初めてで色々調べまくってようやく動いたという感じなのでおそらくコードが変なのだと思いますが、やっとDBに接続できたというレベルなので解決できません……
index.js
js
1var express = require('express'); 2var router = express.Router(); 3 4var mysql = require('mysql'); 5const mysql_setting = { 6 host : 'localhost', 7 user : '***', 8 password : '***', 9 database : '***' 10}; 11 12var posts = []; 13 14 15 16/* GET home page. */ 17router.get('/', function(req, res, next) { 18 const connection = mysql.createConnection(mysql_setting); 19 connection.connect(); 20 connection.query('select * from user', function (error, results, fields) { 21 if (error) throw error; 22 posts = results; 23 // posts.forEach(element => { 24 // console.log('name: ' + element.name); 25 // console.log('id: ' + element.id); 26 // }); 27 }); 28 res.render('index', { title: 'Express' , posts: posts}); 29 connection.end(); 30}); 31 32router.get('/add', function (req, res, next) { 33 const data = { 34 errorMessage: '' 35 } 36 res.render('add',data); 37}); 38 39 40router.post('/add', function(req, res, next) { 41 //var id,name; 42 var result = { 43 id: req.body.id , 44 name:req.body.name 45 }; 46// res.render('', result); 47 const connection = mysql.createConnection(mysql_setting); 48 connection.connect(); 49 const query = 'insert into user set ?'; 50 connection.query(query, result,function (error, results, fields) { 51 if (error) throw error; 52// console.log("1 recoad inserted"+result.id); 53 res.redirect('/'); 54 }); 55}); 56//module.exports.formInsert = (id, name) => formInsert(id,name); 57module.exports = router; 58
index.jade
jade
1extends layout 2 3block content 4 h1= title 5 p Welcome to #{title} 6 a(href='/add') add 7 for post in posts 8 <p>title: #{post.id}</p> 9 <p>content: #{post.name}</p> 10 endfor 11
add.jade
jade
1form(action="/add",method="POST") 2 input(type="text", name="id" value="") 3 input(type="text", name="name" value="") 4 input(type="hidden", name="mode" value="input") 5 input(type="submit", value="送信") 6
詳しい方、よろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/13 15:45 編集
2019/11/13 03:36
2019/11/13 15:50
2019/11/14 02:03