我希望在模型UserModel上定义一个方法,以便获得所有用户id以下是我的实现:

// pseudo code
UserModel === {
    userId : Number,
    userName: String
}

UserSchema.statics.getUsersWithIdLessThan10 = function(){
    var usersLessThan10 = []
    this.find({userId : {$lt : 10}}, function(error, users){
        users.forEach(function(user){
            console.log(user.userName) // ... works fine
            usersLessThan10.push(user.userName)
        })
    })
    return usersLessThan10
}

我理解为什么这看起来不起作用-异步查找api。但如果真是这样,那怎么办呢?这种异步的东西是有点压倒性的。

最佳答案

添加回调并返回此回调中的用户,如下所示:

UserSchema.statics.getUsersWithIdLessThan10 = function(err, callback) {
    var usersLessThan10 = []
    this.find({userId : {$lt : 10}}, function(error, users){
        users.forEach(function(user){
            console.log(user.userName) // ... works fine
            usersLessThan10.push(user.userName)
        })
        callback(error, usersLessThan10)
    })
}

然后用回调调用usersLessThan10
... .usersLessThan10(function (err, users) {
    if (err) {
        // handle error
        return;
    }
    console.log(users);
})

07-26 09:42