我用express和mysql在nodejs上做一个API。在POST方法中,我没有得到任何错误,但在mysql上存储所有值为0,如下所示:
1
0
0.00
0000-00-00
0
(1为ID autoincremental)
要测试post方法,我使用POSTMAN:
{
"Id" : null,
"Concepto" : "Desde POSTMAN",
"Monto" : 10,
"Fecha" : "1988-05-05",
"Tipo" : "Ingreso"
}
这是函数
router.post('/', (req, res) => {
const { id,concepto,monto,fecha,tipo } = req.body;
mysqlConnection.query("INSERT INTO operaciones (Id, Concepto, Monto, fecha, Tipo) VALUES (?)", [req.body],(err, rows, fields) => {
if (!err) {
res.json({Status: "Operacion Saved"});
} else {
console.log(err);
}
});
});
有什么建议,谢谢
在没有看到表定义的情况下,我假设DB引擎默认为您在查询传递空值时获得的0
值。
您应该为您想传递给查询的每个输入使用?
占位符。
而且,解构后的值实际上并没有被使用。
请尝试以下代码:
router.post('/', (req, res) => {
const { id, Concepto, Monto, Fecha, Tipo } = req.body;
mysqlConnection.query("INSERT INTO operaciones (Concepto, Monto, Fecha, Tipo) VALUES (?, ?, ?, ?);", [Concepto, Monto, Fecha, Tipo], (err, results, fields) => {
if (!err) {
res.json({ Status: "Operacion Saved" });
} else {
console.log(err);
}
});
});
注意id
没有在查询中使用,因为你已经提到它被设置为自动递增。