ユーザーオブジェクトを持つmongobがあります。スキーマは次のとおりです。
{
"_id": {
"$oid": "50658c835b821298d3000001"
},
"email": "admin",
"password": "admin",
"id": 1
}
簡単なデモを書きました(主要部分のみ):
function findByEmail(email, callback) {
db.collection("users", function(err, collection) {
collection.find({}, function(err, users) {
users.each(function(err, user) {
if (user) {
if (user.email === email) {
//for a case, is we found user - return it
callback(null, user);
}
}
});
//for a case, is we didn't find user - return null
callback(null, null);
});
});
}
テスト用のルート:
app.get('/test',function(req,res){
findByEmail("admin", function(err, user){
res.send(user);
})
})
localhost:3000/test を起動すると、
Error: Can't set headers after they are sent.
行にコメントcallback(null, null);
すると、このエラーは発生しません。コールバックが機能しているようです... 2回!どうしてですか?私がif (user.email === email) { ... }
動作し、callback(null, user);
起動された場合、関数は にfindbyEmail
戻ります<user>
がapp.get
、コールバックは が true のcallback(null, null);
場合でも 2 回 (また)動作します。if (user.email === email) { ... }