Node.jsの処理順序を理解するのに問題があります。私の問題:次のプロパティを使用して、セッションをCookieに保存する小さなアプリケーションをコーディングしました。
session.email = email;
session.randomHash = randomHash;
randomHash varは、ユーザーがログインするたびに生成されてdbに保存されるランダムな文字列です。セッションを持つユーザーがプライベートページを表示したい場合、メソッドcheckSession()が呼び出されます。
exports.checkSession = function(req, res) {
if(req.session) {
var User = mongoose.model("User", userSchema);
User.count({email: req.session.email, randomHash: req.session.randomHash}, function(err, count) {
if(count === 0) {
return false;
}
if(count === 1) {
return true;
}
});
}
else {
return false;
}
};
このメソッドは、CookieのrandomHashをDbのrandomHash値と比較します。このメソッドはルートで呼び出されます。
exports.init = function(req, res) {
if(hashing.checkSession(req, res)) {
res.render("controlpanel", {title: "Controlpanel", email: req.session.email});
}
else {
res.send("Sorry but you are not logged in. Go to /login");
}
};
今、問題があるに違いありません。ノードの非ブロッキングスタイルのため、メソッドは呼び出されますが、ifステートメントが実行される前に終了しません。私はそれについて何ができますか?