在Node js中,我尝试将数据更新到数据库
但是我不想在paramenter中发送任何ID,而不是我可以从令牌中获取的ID,然后我将进行更新
这是我在控制器中的更新代码
router.put('/', VerifyToken, function (req, res) {
var token = req.headers['x-access-token'];
decoded = jwt.verify(token, config.secret);
User.findById(decoded.id, { password: 0 }, function (err, user) {
if (err) return res.status(500).send("There was a problem finding the user.");
if (!user) return res.status(404).send("No user found.");
var curtime = dateFormat(now, "HH:MM:ss"),
curstatus = 'Test';
const reportData = new Report({
username: user.username,
time: curtime,
status: curstatus
});
Report.findByIdAndUpdate({ username : user.username},reportData)
.then(report => {
if (!report) {
return res.status(404).send({
message: "Report not found with Username " + user.username
});
}
res.send(report);
}).catch(err => {
if (err.kind === 'ObjectId') {
return res.status(404).send({
message: "Report not found with Username " + user.username
});
}
return res.status(500).send({
message: "Error updating report with Username " + user.username
});
});
});
});
它总是返回以下唯一消息:“找不到带有用户名的报告” + user.username
答案 0 :(得分:0)
findByIdAndUpdate
通过_id
字段查找文档。参见findByIdAndUpdate。
第一个参数必须是_id
字段的值。 username
不是_id
。
尝试
const reportData = {
username: user.username,
time: curtime,
status: curstatus
}
Report.findOneAndUpdate({username : user.username}, reportData)