node js在sql中保存所有值为0



我用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没有在查询中使用,因为你已经提到它被设置为自动递增。

最新更新