我正在尝试更新数据库中的收藏夹数组,但是似乎无法更新?我已经搜寻了很多年,试图找到解决方案,但是似乎没有任何效果。
我将ID保存在cookie中,并在发出更新请求时将其发送到正文中...
“已选择”是对象数组。这就是需要将的内容替换为favouriteStations属性,如果为空,则将其添加。
数据库结构如下:
"id": id,
"email: "test@test",
"password": "test",
"userInfo": {
"firstName": "test",
"lastName": "test",
"favouriteStations": [{array i want to replace}]
}
我尝试了许多不同的组合,但是到目前为止,这是我所没有的,
app.post("/api/update", (req, res) => {
console.log("updating user details");
const { id, selected } = req.body;
UserModel.findOneAndUpdate(
{ _id: id },
{ userInfo: { favouriteStations: { $set: selected } } },
{ useFindAndModify: false }
)
.then((user, err) => {
if (err) {
console.log("an error?");
res.status(500).json({
error: "Server error",
});
} else if (!user) {
console.log("user not exists?");
res.status(401).json({
error: "Incorrect credentials",
});
} else {
console.log("updated?");
console.log(user);
}
})
.catch((err) => {
console.log(err);
});
});
答案 0 :(得分:1)
您不清楚“ ..它不起作用”是什么意思,请您详细说明一下,即收到什么错误?如果没有,怎么办?
$set
运算符应以MongoDB docs的以下格式使用:
{ $set: { <field1>: <value1>, ... } }
这就是说,您可能无法正确访问favouriteStations
,请按如下所示使用点号来访问子文档:
...
UserModel.findOneAndUpdate(
{ _id: id },
{ $set: {'userInfo.favouriteStations': selected} } ,
{ useFindAndModify: false }
)
...