【问题标题】:Mongo : How to Display User Specific Data From 2 Different CollectionMongo:如何显示来自 2 个不同集合的用户特定数据
【发布时间】:2020-04-04 21:28:30
【问题描述】:

我想显示用户指定的数据。我使用 Passport 来验证用户,我有 2 个数据库名称:

  • 用户
  • 任务
    在用户中有:用户名、电子邮件、密码字段
    在任务中我有:startTime、endTime、sessionTime、Email
    所以我只想显示与电子邮件匹配的数据,或者是否有任何其他方式来识别要显示的用户特定数据

我的获取请求代码:

router.get('/show', (req, res, next) => {
    Task.find({})
        .exec(function (err, task) {
            if (err) {
                res.json({
                    status: false,
                    Message: "Error in Getting Task",
                    Error: err
                })
            }
            res.json(task)
        })
})

有没有办法只获取用户指定的数据

或者我可以对护照代码进行一些更改以显示特定数据
护照代码:

   function (username, password, done) {
        User.findOne({ email: username }, function (err, user) {
            if (err) { return done(err); }
            if (!user) {
                return done(null, false, { message: 'Incorrect username.' });
            }
            if (!user.isValid(password)) {
                return done(null, false, { message: 'Incorrect password.' });
            }
            return done(null, user);
        });
    }
));


passport.serializeUser(function(user, done) {
    done(null, user._id);
  });

  passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
      done(err, user);
    });
  }); 

谢谢。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    如果来自 usar 的电子邮件和来自任务的电子邮件完全相等,您可以使用来自 mongo DB 的 aggregation framework

    在 NodeJS 中使用聚合框架: https://mongodb.github.io/node-mongodb-native/2.0/tutorials/aggregation/

    使用查找(等效内连接): https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

    最佳,

    【讨论】:

      【解决方案2】:
      db.users.aggregate([
         {
           $lookup:
             {
               from: "tasks",
               localField: "email",
               foreignField: "pEmail",
               as: "Tasksss"
             }
        }
      ])
      

      这可能对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-27
        • 1970-01-01
        • 1970-01-01
        • 2014-02-06
        • 2020-07-11
        相关资源
        最近更新 更多