0

对如何构建数据库调用有一个真正的负担,以便它们被迫在其余函数之前加载。这是一件简单的事情。在我对他采取行动之前,需要在数据库中找到一个用户。

所以我现在正在尝试使用 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.connect) 而不是单独的连接 (mongoose.createConnection) 的含义。

mongoose的主 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 回答