我正在尝试使用express和mongodb构建“添加到收藏夹”后端功能。我已经完成并可以正常工作,但是我不确定这是正确的方法还是最佳实践。 我希望用户能够将喜欢的任务添加到收藏夹。
我有那些用户和任务模型。
他们还存储了以下内容:
用户模型:
const UserSchema = new Schema({
favorites: {
type: [String]
}
});
任务模型:
const TaskSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: "users"
},
});
在用户的收藏夹数组中,我存储了计划从中获取相应任务的任务ID。 问题是,我应该如何根据存储在“用户收藏夹”数组中的ID获得相应的任务? API:
router.get(
"/user/favorites",
passport.authenticate("jwt", { session: false }),
(req, res) => {
const errors = {};
let favoriteTasks = [];
User.findOne({ _id: req.user.id })
.then(user => {
Task.find({})
.then(tasks => {
tasks.map(task => {
if (
user.favorites !== undefined &&
user.favorites.indexOf(task._id) != -1
) {
favoriteTasks.push(task);
res.json(favoriteTasks);
} else {
errors.notfound = "Not found...";
return res.json(errors);
}
});
})
.catch(err => res.status(404).json(err));
})
.catch(err => res.status(404).json(err));
}
);
我可以搜索2个模型,然后像这样通过数组映射吗?它会以任何方式影响性能吗?感谢您的回答。