2016-07-25 7 views
0

私はExpress、Passport、Handlebars、Mongoose/MongoDBを使ってウェブサイトのクイズを作成しています。私は、同じユーザーが同じクイズを2回服用しないようにしようとしています。クイズは1つしかありません。彼らはそれを終えると、再びそれを取ることができません。誰かが自分のコードに何が間違っているのか教えてもらえますか?ユーザーがクイズを2回取ることを許可しない

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が真の場合、ユーザーをダッシュ​​ボードに戻すのが理想的です。私が経験している問題は、上記のルートに乗ろうとするたびにローディングバーが決して終わらない、ウェブページの停止です。

+0

なぜMongoDBのから戻って来るもの読んでいませんか?同様に、 'function(err、user)...' –

答えて

1

req.userがすでに設定されている場合(私はあなたのデータベースと同じモデルを想定しています)、別のDBクエリを作成するのではなく、ハンドラでチェックしてみませんか?

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 
    } 
}); 
+0

Works!ありがとう!! – vincentjp

関連する問題