我想从此函数(其返回对象)返回(true,false)。 我该怎么做才能返回布尔值? 该代码是对用户模块的静态方法
users.statics.is_username_used = function(name) {
return this.findOne({username: name}, function(error,doc){
if(is_empty(doc)){
return false;
}else{
return true;
}
});
};
答案 0 :(得分:0)
使用回调函数返回布尔值。例如,您可以将静态代码重写为
// assign a function to the "statics" object of your usersSchema
usersSchema.statics.is_username_used = function(name, cb) {
return this.findOne({username: name}, function(error, doc){
if (err) return cb(err, null);
return cb(null, !is_empty(doc));
});
};
const User = mongoose.model('User', usersSchema);
User.is_username_used('someusername', (err, usernameExists) => {
console.log(usernameExists);
});
答案 1 :(得分:0)
如果您拥有Node.js 7.6+,则可以使用async / await功能使您的函数具有同步性。
users.statics.is_username_used = async function(name) {
var doc = await this.findOne({username: name});
if (is_empty(doc))
return false;
return true;
};
然后将以'await'调用is_username_used函数以获取布尔结果:
var isUsed = await User.is_username_used('someusername');