1

Mongoose でいくつかの静的変数を作成しようとすると、find() または findOne() を呼び出すときにエラー引数にアクセスできないようです。これが私の静的です:

User.statics.authenticate = function(login, password, cb){
    return this.model('User').findOne({
        username: login, 
        password: password
    }, function(err, user){
        console.log("error", err);
        console.log("user", user);
    }).exec(cb);
};

私はこのようなものでそれを呼び出そうとしています:

exports.session = function(req, res){
    return User.authenticate(req.body.login, req.body.password, function(err, doc){
        console.log('err', err);
        console.log('doc', doc);
    });
};

どのような状況でも、findOne クエリの結果に関係なく、err は常に null です。ここで何が起こっているかについて何か考えはありますか?たぶん、これらすべてのコールバックに頭を悩ませることはできません...

4

2 に答える 2

7

どうやら空のクエリ結果は実際にはエラーではないので、結果が見つからないにもかかわらず「err」がnullのままである理由です。したがって、「user」がnullかどうかをテストしてから、独自のエラーを作成する必要があります。

于 2012-07-05T04:09:53.017 に答える
2

あなたが見ているものを完全に説明しているかどうかはわかりませんが、コールバック関数を直接提供する場合は、 をfindOne呼び出しませんexec。したがって、認証関数は次のようになります。

User.statics.authenticate = function(login, password, cb){
    this.model('User').findOne({
        username: login, 
        password: password
    }, function(err, user){
        console.log("error", err);
        console.log("user", user);
        cb(err, user);
    });
};
于 2012-07-04T01:55:53.443 に答える