Express 没有将更新的行保存到数据库
Express is not saving updated row to database
我在 Express 和 NodeJS 中有一个函数,我可以在其中切换项目的布尔值。因此,当函数被调用时,布尔值将被交换为另一个值。我做了一个 console.log 的布尔值。我的 MongoDB 中的对象没有得到更新。我有一个 Post、Get 和 GetAll 对相同对象的请求和来自 MongoDB 的请求,它们都有效。所以连接数据库没有问题
router.post("/payed/:id", (req, res) => {
Item.findOne({ _id: req.params.id }, (err, item) => {
item.childeren.forEach((child) => {
if (child.name === req.body.name) {
console.log(child.payed);
child.payed = !child.payed;
console.log(child.payed);
}
});
item.save((saveErr, saveItem) => {
if (saveErr) res.send(saveErr);
return res.status(200).send(saveItem);
});
});
});
mongoose中的.save()
用于保存一个新文档。您可以在获取记录后使用 findOneAndUpdate
更新记录。尝试这样的事情:
router.post("/payed/:id", (req, res) => {
Item.findOne({ _id: req.params.id }, (err, item) => {
/* get children */
let children = item.children;
/* updating children's array */
children.forEach((child) => {
if (child.name === req.body.name) {
child.payed = !child.payed;
}
});
/* resaving the document */
Item.findOneAndUpdate({ _id: req.params.id },
{children: children },
{new: true},
(saveErr, updatedDoc) => {
if (saveErr) res.send(saveErr);
return res.status(200).send(updatedDoc);
});
});
});
我在 Express 和 NodeJS 中有一个函数,我可以在其中切换项目的布尔值。因此,当函数被调用时,布尔值将被交换为另一个值。我做了一个 console.log 的布尔值。我的 MongoDB 中的对象没有得到更新。我有一个 Post、Get 和 GetAll 对相同对象的请求和来自 MongoDB 的请求,它们都有效。所以连接数据库没有问题
router.post("/payed/:id", (req, res) => {
Item.findOne({ _id: req.params.id }, (err, item) => {
item.childeren.forEach((child) => {
if (child.name === req.body.name) {
console.log(child.payed);
child.payed = !child.payed;
console.log(child.payed);
}
});
item.save((saveErr, saveItem) => {
if (saveErr) res.send(saveErr);
return res.status(200).send(saveItem);
});
});
});
.save()
用于保存一个新文档。您可以在获取记录后使用 findOneAndUpdate
更新记录。尝试这样的事情:
router.post("/payed/:id", (req, res) => {
Item.findOne({ _id: req.params.id }, (err, item) => {
/* get children */
let children = item.children;
/* updating children's array */
children.forEach((child) => {
if (child.name === req.body.name) {
child.payed = !child.payed;
}
});
/* resaving the document */
Item.findOneAndUpdate({ _id: req.params.id },
{children: children },
{new: true},
(saveErr, updatedDoc) => {
if (saveErr) res.send(saveErr);
return res.status(200).send(updatedDoc);
});
});
});