我在更新猫鼬模型中的字段时遇到了一些问题。我试图在用户模型的朋友列表中找到一个用户名,然后更新具有该用户名的同一对象中的字段。
我就是这么做的,但状态不会更新:
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属性。