【问题标题】:Node.js - return value from callback to the main functionNode.js - 从回调到主函数的返回值
【发布时间】:2019-02-17 02:28:40
【问题描述】:

我想从这个函数返回 (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;
        }
    });
};

【问题讨论】:

标签: javascript node.js mongoose


【解决方案1】:

使用回调函数返回布尔值。例如,您可以将静态重写为

// 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);
});

【讨论】:

    【解决方案2】:

    如果您有 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;
    };
    

    然后函数 is_username_used 将被调用 'await' 以获得布尔结果:

    var isUsed = await User.is_username_used('someusername');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2014-06-13
      • 2019-12-17
      • 2020-09-12
      • 1970-01-01
      相关资源
      最近更新 更多