【问题标题】:Not Allow user to take quiz twice不允许用户参加两次测验
【发布时间】:2016-07-25 09:06:17
【问题描述】:

我正在使用 Express、Passport、Handlebars 和 Mongoose/MongoDB 为网站构建测验。我试图阻止同一用户两次参加相同的测验。只有一个测验。一旦他们完成它,他们就不能再接受它了。谁能告诉我我的代码有什么问题?

router.get('/tools/start-health-assessment', function(req, res) {
  User.find({
    _id: req.user._id,
    assessmentTaken: true
  }).then(function(err) {
    if (err) {
      throw err;
    } else {
      res.redirect('/users/dashboard');
    }
  });
});

此路线获取测验之前的说明页面。我的逻辑是在这条路线中使用 Mongo 查询。如果assessmentTaken 为真,我想理想地将用户重定向回仪表板。我遇到的问题是每次我尝试到达上面的路线时网页停滞不前,即加载栏永远不会结束。

【问题讨论】:

  • 你为什么不阅读从 mongodb 返回的内容?如function(err, user) ...

标签: node.js mongodb express passport.js


【解决方案1】:

如果您已经填充了 req.user(我假设与您的数据库中的模型相同),为什么不在处理程序中检查它,而不是进行另一个数据库查询?

EG:

router.get('/tools/start-health-assessment', function(req, res) {
    // assuming your Passport middleware won't let a request get here w/o a user on it. 
    if (req.user.assessmentTaken) {
      res.redirect('/users/dashboard');
    } else {
      res.render('health-assessment'); // or whatever you call it
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多