Javascript MongoDB/Mongoose$在匹配对象id的数组中拉取对象
我这里有这个模式 考虑Javascript MongoDB/Mongoose$在匹配对象id的数组中拉取对象,javascript,node.js,database,mongodb,mongoose,Javascript,Node.js,Database,Mongodb,Mongoose,我这里有这个模式 考虑likedTours,它是一个对象数组(巡更)(忽略位置0)。 我想在巡演的\u id与critiria匹配的地方拉任何对象 喜欢旅游时添加一个新的旅游是可以的,但我不知道如何取出该项目 这是我在Node.JS后端的控制器中的函数 const unlikeTour = async (req, res) => { try { TourDB.Tour.findOneAndUpdate( { _id: req.params.tourid
likedTours
,它是一个对象数组(巡更)(忽略位置0)。
我想在巡演的\u id
与critiria匹配的地方拉任何对象
喜欢旅游时添加一个新的旅游是可以的,但我不知道如何取出该项目
这是我在Node.JS后端的控制器中的函数
const unlikeTour = async (req, res) => {
try {
TourDB.Tour.findOneAndUpdate(
{ _id: req.params.tourid },
{
$pull: { likedUsers: req.userID },
$inc: { likes: -1 },
}
).exec(async (err, docs) => {
if (!err) {
try {
await UserDB.User.findOneAndUpdate(
{ _id: req.userID },
{ $pull: { 'likedTours._id': docs._id } } //Here I need help
).exec()
return res.status(200).send({ successMessage: 'Tour successfully unliked' })
} catch (err) {
return res.status(500).send({ errorMessage: 'User not found' })
}
} else {
return res.status(500).send({ errorMessage: 'Tour not found' })
}
})
} catch (err) {
return res.status(500).send({ errorMessage: err })
}
}
此方法查找一个巡更,并通过拉出userID并将likes计数减少-1来更新它。
然后我尝试在UserDB中找到likedTours
中的tour,并尝试拉取,但结果不是这样
提前感谢您可以根据需要更新
await UserDB.User.findOneAndUpdate(
{ _id: req.userID },
{ $pull: { likedTours: { _id: docs._id } } } //Here I need help
).exec();
参考: