【问题标题】:Expressjs (node) - How to get a set of data which is filtered according to the userExpressjs(节点) - 如何获取根据用户过滤的一组数据
【发布时间】:2016-09-20 05:32:58
【问题描述】:

我是表达js的新手。我目前正在构建一个待办事项列表网络应用程序。我一直在关注教程并且能够执行基本的 CRUD 操作。我有两个模型。

  1. 用户 - (姓名、电子邮件、密码哈希、密码盐、todo_items - 引用第二个模型)。
  2. Todo_items -(标题、描述、到期日期、用户 - 引用第一个模型)。

当用户登录时,我可以读取他的 user_id。但是,如何过滤仅属于用户的 todo_items?我当前的代码看起来像这样,并且正在返回所有用户的所有 todo_items。

router.get('/api/todo_items', function(req, res, next){
  Todo_items.find(function(err,todo_items){
    if(err){return next(err); }
    res.json(todo_items);
  })
});

目前,我正在使用前端框架 Angularjs 来过滤显示的结果。但我认为随着用户群变大,这效率低下。如何从后端创建过滤系统?

【问题讨论】:

    标签: node.js mongodb rest express mongoose


    【解决方案1】:

    您可以在 user 字段上查询集合,假设它在 _id 字段上引用了 User 模型,因此您可以得到类似以下内容:

    router.get('/api/todo_items', function(req, res, next){     
        Guest.find({ "user": user_id }).exec(function(err, todo_items){
            if(err) { return next(err); }
            res.json(todo_items);
        });
    });
    

    【讨论】:

    • 所以我需要一个中间件来定义 user_id?
    • 你知道我如何从本地存储中获取 user_id 吗?
    • 您将需要一种机制来通过中间件通过req 对象req.user 获取user_id 或使用路由url,例如router.get('/api/user/:id/todo_items', function(req, res, next){ var user_id = req.params.id; ... }。不幸的是,这是一个宽泛的问题,据我所知,您可以在 SO 上创建一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多