【问题标题】:Returning value of a promise in mongoose猫鼬中承诺的返回值
【发布时间】:2016-04-23 18:26:31
【问题描述】:

我正在尝试一个非常基本的事情 - 在数据库中找到一个用户并返回一个特定的找到记录的字段。我想使用 Promise,部分用于教育目的。

var username = "user1" // assuming this exists: User({username: "user1", city: "London"})

function getUser(username) {
    var promise = User.findOne({username: username}).exec();

    var output = promise.then( function(user) {
        return user.city;
    }).catch(function(err) {
        console.log(err);
    }); 
    return output;
}

使用上面给出的代码,假设有给定数据的用户,输出变量仍然是一个承诺。我怎样才能得到它的实际价值?我有一种预感,我的问题在于 return 语句不是异步的,即我在实际解决之前返回输出。返回值的正确方法是什么?

【问题讨论】:

    标签: node.js mongodb promise


    【解决方案1】:

    您返回承诺,要在承诺解决时获取值,您应该在返回的承诺上调用then

    function getUser(username) {
        return User
            .findOne({username: username})
            .then(function(user) {
                return user.city;
            })
            .catch(function(err) {
                console.log(err);
            });
    }
    
    // How to use getUser
    getUser('John')
        .then(function(city) {
            console.log(city);
        });
    

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 2019-02-13
      • 2018-08-19
      • 2021-12-04
      • 2020-07-21
      • 2015-05-12
      • 2020-12-24
      • 2016-06-10
      • 1970-01-01
      相关资源
      最近更新 更多