0

残りの関数の前に強制的にロードされるように DB 呼び出しを構造化する方法にかなりの時間を費やしています。これは簡単なことです。私が彼に行動する前に、DBでユーザーを見つける必要があります。

だから私は今Mongoose呼び出しでasync.jsを並列しようとしています。正直に言うと、これを行うために 85 の異なる方法を試しました。

コードは次のとおりです。

async.parallel ([

   function(callback) {

       mongoose.connect(ConnString, function(error) {

       console.log("connection ok...")

       callback();

    });
  },

function(callback) {

    console.log("second function");

    callback();

}], 

function(error){

    console.log("in the error callback");

});

いつも同じ結果が得られます。

second function
out of async... continuing
connection ok...
in the error callback

これは、私が提供できる最も簡単な内訳です​​。この問題に 6 時間費やしました。ご協力をお願いします。

4

1 に答える 1

0

あなたがしようとしているのは、ステートメントを発行する前に db-connection の準備ができていることを確認することである場合は、気にしないでください。mongoose は、準備が整うまでリクエストをキューに入れます。

また、別の接続 (mongoose.createConnection) ではなく、既定の接続 (mongoose.connect) を使用することの意味を理解していることを確認してください。

マングースのメイン github ページには、興味深い読み物が含まれています。

また、 async.parallel ブロッ​​クを緩めます...不要です。コードをそのまま書くだけです。

=================================編集================ ===============

次のようなものが役立つかどうかを確認してください。

/* dependencies */
 var mongoose = require('mongoose');

/* schema definition */
var UserSchema = new mongoose.Schema({
    phone: { type: String, required: true }
    // other user details here...
});

/* model definition */
var User = mongoose.model('User', UserSchema);

/* static methods */
UserSchema.statics.isAuthorized = function (phone, cb) {
    User.find({ phone : { $in : [phone] } }).exec(function(err, data) {
        // logic & callback here...
    });
}; // eo isAuthorized(..)

// export the user.
module.exports = User;

User.isAuthorozed(...) を実行できるようになりました

于 2013-06-08T23:50:21.880 に答える