gpt4 book ai didi

node.js - mongoose findByIdAndUpdate 不修改模型也不返回错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:51 24 4
gpt4 key购买 nike

我有一个名为 Message 的 Mongoose 模型,当创建该模型时,我想将消息 Id 保存到另一个名为 User 的模型中的数组中。但是,当调用 findByIdAndUpdate 方法时,它不会修改用户模型,也不会返回错误消息。我已检查是否使用了正确的用户 ID,并且消息 ID 也有效。你有什么想法为什么 Mongoose 会有这样的行为吗?

Message.post('save', function addMessageToUser(doc) {
User.findByIdAndUpdate(doc.userID, {
$push: {
messages: {
$each: [doc._id],
$sort: { createdAt: 1 },
$slice: -1000,
},
},
}, {
new: true,
}, (response, error) => {
console.log(response);
console.log(error);
})
});

最佳答案

在 mongo cli 中尝试相同的命令后,我发现 doc.userID 没有被转换为 ObjectId。相反,我在执行查询之前使用 mongoose.Type.Object(doc.userID) 将字符串转换为 ObjectId。

Message.post('save', function addMessageToUser(doc) {
User.update({
"_id": mongoose.Types.ObjectId(doc.userID),
}, {
$push: {
messages: {
$each: [doc._id],
$sort: { createdAt: 1 },
$slice: -1000,
},
},
})
}

关于node.js - mongoose findByIdAndUpdate 不修改模型也不返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37329351/

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