dockerを用いてnode.jsとexpressのコンテナとmysqlのコンテナをつなげようとしています。また、html上の入力フォームに書いた文字や数値をmysqlに登録させたいです。
参考サイト様の「Node.jsとデータベースを接続しよう」がうまくできません。
入力フォームに文字や数値を入れるとエラー画面になってしまいます。
以下のソースコードはindex.ejs
<!Doctype html> <html> <head> <title><%= title %></title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1><%= title %></h1> <p>Welcome to <%= title %></p><p>Hello, <%= name %></p> <div class="wrapper"> <form action="/" method="post" class="board-form"> name: <Innput type="text"name="name" class="input" required><br> <br> address:<Input type="text" name="address" class="input" required><br> <br> lat: <input type="text" name="lat" class="input" required><br> <br> lng: <input type="text" name="lng" class="input" required><br> <br> type: <input type="text" name="type" class="input" required><br> <br> <button type="submit" class="submit" >create</buton> </form> </div> </body> </html>
以下のソースコードはindex.js
var express = require('express'); var router = express.Router(); var connection = require('../mysqlConnection'); // ???? /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express',name:'n-name' }); }); router.post('/', function(req, res, next) { var title = req.body.title; var query = 'INSERT INTO markers (name, address,lat,lng,type) VALUES ("' +name + '", ' + '"' + address + '",'+'"'+lat+'",'+'"'+lng+'",'+'"'+type+'")'; connection.query(query, function(err, rows) { res.redirect('/'); }); }); module.exports = router;
DBname:MAP
tablename:markers
+----+----------+-------------+------------+------------+----------+
| id | name | address | lat | lng | type |
+----+----------+-------------+------------+------------+----------+
| 1 | niigata | aaaa | 13.222000 | 30.990000 | k |
| 2 | testname | testaddress | 40.000000 | 130.000000 | testtype |
| 3 | testname | testaddress | 50.000000 | 150.000000 | testtype |
| 4 | testname | testaddress | 50.000000 | 150.000000 | testtype |
| 5 | sas | 23 | 123.333000 | 24.660000 | 1 |
+----+----------+-------------+------------+------------+----------+
エラーは以下のように出て、投稿がうまくできません。
name is not defined
ReferenceError: name is not defined
at /home/mysql-test/node-test/routes/index.js:12:80
at Layer.handle [as handle_request] (/home/mysql-test/node-test/node_modules/express/lib/router/layer.js:95:5)
at next (/home/mysql-test/node-test/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/mysql-test/node-test/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/mysql-test/node-test/node_modules/express/lib/router/layer.js:95:5)
at /home/mysql-test/node-test/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/mysql-test/node-test/node_modules/express/lib/router/index.js:335:12)
at next (/home/mysql-test/node-test/node_modules/express/lib/router/index.js:275:10)
at Function.handle (/home/mysql-test/node-test/node_modules/express/lib/router/index.js:174:3)
at router (/home/mysql-test/node-test/node_modules/express/lib/router/index.js:47:12)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/19 09:42