【发布时间】:2020-07-26 06:36:54
【问题描述】:
我刚刚在 Node.js 中启动后端 现在我想在 Node.js 中编写一个 REST api,它应该将数据发送到 Mysql 数据库。 GET 请求显然工作正常,因此 GET 请求没有任何问题,只有 POST,它不会将信息保存到数据库中。
我的代码是这样的
app.post('/users/', function(req,res){
let sql ="insert into personal_info (name, email, gender, national_id,salary) values (?)";
let values = [req.body.name, req.body.email, req.body.gender,req.body.national_id,req.body.salary];
db.query(sql, [values], function(err, data, fields){
if (err) throw err;
res.json({
status: 200,
message: "New user added successfully"
})
});
});
在 POSTman 中运行它,我得到了这个:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /users</pre>
</body>
</html>
我似乎缺少什么东西吗?就像我说的,我对此很陌生,我确实需要某种形式的澄清。
编辑
代码现在看起来像这样:
app.post('/api/user/', function(req,res){
let sql ="insert into personal_info (name, email, gender, national_id,salary) values (?,?,?,?,?)";
let values = [req.body.name, req.body.email, req.body.gender,req.body.national_id,req.body.salary];
dbcon.query(sql, [values], function(err, data, fields){
if (err) throw err;
res.json({
status: 200,
message: "New user added successfully"
})
});
});
这是错误
D:\Node_JSREST\nodejsrest_example>node index.js
Node app is on port 5900
D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\Parser.js:437
throw err; // Rethrow non-MySQL errors
^
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?,?,?,?)' at line 1
at Query.Sequence._packetToError (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
at Query.ErrorPacket (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\sequences\Query.js:79:18)
at Protocol._parsePacket (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket.<anonymous> (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\Connection.js:88:28)
at Socket.<anonymous> (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\Connection.js:526:10)
at Socket.emit (events.js:189:13)
at addChunk (_stream_readable.js:284:12)
--------------------
at Protocol._enqueue (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Connection.query (D:\Node_JSREST\nodejsrest_example\node_modules\mysql\lib\Connection.js:198:25)
at D:\Node_JSREST\nodejsrest_example\index.js:42:9
at Layer.handle [as handle_request] (D:\Node_JSREST\nodejsrest_example\node_modules\express\lib\router\layer.js:95:5)
at next (D:\Node_JSREST\nodejsrest_example\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (D:\Node_JSREST\nodejsrest_example\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (D:\Node_JSREST\nodejsrest_example\node_modules\express\lib\router\layer.js:95:5)
at D:\Node_JSREST\nodejsrest_example\node_modules\express\lib\router\index.js:281:22
at Function.process_params (D:\Node_JSREST\nodejsrest_example\node_modules\express\lib\router\index.js:335:12)
at next (D:\Node_JSREST\nodejsrest_example\node_modules\express\lib\router\index.js:275:10)
D:\Node_JSREST\nodejsrest_example>
再次编辑
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mysql = require('mysql');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.get('/',function(req,res){
return res.send({error:true, message : 'hello world'});
});
var dbcon = mysql.createConnection({host:'localhost',user:'root',password:'',database:'staffdb' });
dbcon.connect();
app.get('/users',function(req,res){
dbcon.query('select * from personal_info', function (error, results, fields){
if (error) throw error;
return res.send({ error: false, data: results, message: 'users list.' });
});
});
app.get('/users/:id',function (req, res){
let user_id = req.params.id;
if (!user_id) {
return res.status(400).send({ error: true, message: 'Please provide user_id' });
}
dbcon.query('select * from personal_info where id=?',user_id,function(error, results,fields){
if (error) throw error;
return res.send({ error: false, data: results[0], message: 'users list.' });
});
});
app.post('/api/user/', function(req,res){
let sql ="insert into personal_info (name, email, gender, national_id,salary) values (?)";
let values = [req.body.name, req.body.email, req.body.gender,req.body.national_id,req.body.salary];
dbcon.query(sql, [values], function(err, data, fields){
if (error) throw error;
res.json({
status: 200,
message: "New user added successfully"
})
});
});
app.listen(5900,function(){
console.log('Node app is on port 5900');
});
module.exports = app;
【问题讨论】:
-
这能回答你的问题吗? Cannot POST / error using express
-
@GirkovArpa,不,不是
-
你能显示你所有的
express代码吗? -
OK Lemme 显示编辑
-
@GirkovArpa,我已将完整代码放入您的视图的新编辑中
标签: javascript mysql node.js rest