我试图通过在recipeID中附加usersID来显示用户保存的食谱。当我发出GET请求时。我得到的是一个没有属性的空对象。这段代码到底是怎么回事?
以下是保存的食谱路线:
router.get('/savedRecipes/ids/:userID', async (req, res) => {
const {userID} = req.params
try {
const user = await UserModel.findById(mongoose.Types.ObjectId(userID));
res.status(201).json({ savedRecipes: user?.savedRecipes });
} catch (err) {
console.log(err);
res.status(500).json(err);
}
})
router.get('/savedRecipes/:userID', async (req, res) => {
const {userID} = req.params
try {
const user = await UserModel.findById(mongoose.Types.ObjectId(userID));
const savedRecipes = await RecipeModel.find({
_id: { $in: user.savedRecipes },
});
console.log(savedRecipes);
res.status(201).json({ savedRecipes });
} catch (err) {
console.log(err);
res.status(500).json(err);
}
})
字符串
1条答案
按热度按时间8fq7wneg1#
不需要写
UserModel.findById(mongoose.Types.ObjectId(userID))
,只需要写UserModel.findById(userID)
我假设“savedRecipes”是一个“Recipe _ids”数组,就像
["64aaea3d0ce4282f14604767", "64aaea3d0ce4282f1460476s"]
this,所以问题就在这里
字符串
这里的
_id
是Mongoose ObjectId,user.savedRecipes是一个Array of Strings
您不能将
Strings
与Mongoose ObjectID
进行比较。因此将recipe _ids保存为“savedRecipes”Array中的Mongoose ObjectID
。要将id保存为Mongoose ObjectId,请像这样更改Schema:
型
或者在将其保存到
savedRecipe
数组时使用new mongoose.Types.ObjectId(recipeID)
。