更新对象子阵列猫鼬中的字段时出现问题



我在更新猫鼬模型中的字段时遇到了一些问题。我试图在用户模型的朋友列表中找到一个用户名,然后更新具有该用户名的同一对象中的字段。

我就是这么做的,但状态不会更新:

router.post('/profile/:id/friendRequest/:username', authenticateUser)
router.post('/profile/:id/friendRequest/:username', async (req, res) => {
const { id, username } = req.params;
const { status } = req.query;
try {
const user = await User.findOneAndUpdate({_id: id, 'friends.username': username},  {$set: 
{'friends.$.status': status}}, {new:true, upsert: true}).exec();

res.json({
friends: user.friends,
success: true,
loggedOut: false,
})
} catch (err) {
catchError(res, err, 'Invalid user id');
}
});

我试图在中更新状态的模式部分

User({
friends: {
status: Number,
username: String,
state: String
}
});

希望得到一些帮助,让我走上正轨。

根据设置的文档,您可以使用"朋友。状态";在第二个论点中。"朋友。$。"状态";将在friends的$property中查找status属性。

最新更新