gpt4 book ai didi

javascript - 问题删除用户模型(数组)中的项目,不确定如何保存结果

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:21 24 4
gpt4 key购买 nike

我的 mongodb 数据库中有一个具有各种帖子 ID 的用户,我正在使用 mongoose 与其通信。

这是用户对象

[
{
"premium": true,
"max_posts": 55,
"posts_made": 52,
"posts": [
"5e10046c0be4f92228f6f532",
"5e1005a9dceb1344241c74c5",
"5e100753a6cfcb44d8f1fa09",
"5e1007bea6cfcb44d8f1fa0a",
"5e1008149324aa1d002a43be",
"5e1009562826a308a0812e92",
"5e100a625e6fcb2c90a07bec",
"5e157143536d6e04a80651bd",
"5e1e320dc749f23b189ccef7",
"5e1e3273546d55384c3a975c",
"5e1e340183d0b0080816cedd",
"5e1e368bd921f3194c22b3d2",
"5e1e3732d921f3194c22b3d3",
"5e1e3a6f9b3017189cff0fe2",
"5e1e3c1a8c38f11c60354052",
"5e1e9ab208d0a5416828d0a3"
],
"_id": "5e0fe3f33c2edb2f5824ddf2",
"email": "user@gmail.com",
"createdAt": "2020-01-04T01:01:39.840Z",
"updatedAt": "2020-01-15T04:53:08.987Z",
"__v": 16
}
]

因此,我使用express向数据库发出请求,然后尝试使用一篇文章的id来过滤数组,然后我要求express保存修改后的用户模型...

router.delete('/testing', (req,res,next) =>{


userModel.findOne({ email: req.body.author }, function(error, user) {

user.posts.filter(item => item != req.body.postid)

user.save((err) => {
console.log(err);
});
res.json(user)

});

});

我在 postman 中的请求:

enter image description here

如您所见,该项目仍然存在于该数组中...检查 console.log。

请指教,因为我有疑问,谢谢。

最佳答案

您不需要查找和更新用户的文档,这会进行两次数据库调用,再加上.filter(),试试这个:

router.delete('/testing', (req, res, next) => {

userModel.findOneAndUpdate({ email: req.body.author},
{ $pull: { "posts": req.body.postid } }, { new: true }, function (error, user) {
res.json(user);
});
});

这里我们使用.findOneAndUpdate(),因为它返回您需要发回的更新后的用户文档。

关于javascript - 问题删除用户模型(数组)中的项目,不确定如何保存结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59760522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com