添加到收藏夹正确的方法吗?

时间:2018-07-14 05:36:32

标签: node.js mongodb express mongoose

我正在尝试使用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个模型,然后像这样通过数组映射吗?它会以任何方式影响性能吗?感谢您的回答。

0 个答案:

没有答案