我希望在模型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);
})