有一个Angular 4客户端Nodejs-Express后端和PostgreSQL数据库。问题是,如果我想将数据发送到服务器(在我的子模块中,什么是待办事项功能)后端发送给我下一个:
我的错误信息是:
POST / api / datatodo 500 1.150 ms - 969 错误:整数的输入语法无效:""
modal.ts
class Searches {
_id: string;
title: string;
newdata: string;
constructor(
){
this.title = ""
this._id = ""
this.newdata = ""
}
}
后端的插入查询:
function createSearch(req, res, next) {
req.body.launched = parseInt(req.body.launched);
db.none('INSERT INTO table (userid, word)' +
'values(${_id}, ${newdata})',
req.body)
.then(function () {
res.status(200)
.json({
status: 'success',
message: 'Cool'
});
})
.catch(function (err) {
return next(err);
});
}
答案 0 :(得分:1)
pg-promise根据其JavaScript类型格式化值。从错误中看,_id
或newdata
中至少有一个是字符串,而整数是预期的。
那么你为字段launched
做了什么,你甚至不使用它,你应该对那些字段做以纠正这种类型:
const a = req.body;
a._id = +a._id;
a.newdata = +a.newdata;
db.none('INSERT INTO table(userid, word) VALUES(${_id}, ${newdata})', a)
这是推荐的方法。或者,您可以通过将::int
附加到整数参数来执行服务器端转换:
db.none('INSERT INTO table(userid, word) VALUES(${_id}::int, ${newdata}::int)', req.body)
另一种有用的方法:
const a = req.body;
db.none('INSERT INTO table(userid, word) VALUES($1, $2)', [+a._id, +a.newdata])