函数不返回JSON属性值 - node.js

时间:2017-10-20 00:07:22

标签: javascript node.js asynchronous promise

我在Couch.db上创建了一个数据库,我正在使用couch.GET方法来检索文档数据。我创建了一个测试函数,它将检索" name"的值。对象并通过console.log输出结果。

function sendDB() {
    couch.get(dbName, viewUrl).then(
        function(data, headers, status){
            console.log(data.data.rows[0].value.name);
        }
    )
}

sendDB();

在上述功能中,输出是John Doe'应该如此。当我尝试返回data.data.rows[0].value.name

的值时出现问题
function sendDB() {
    couch.get(dbName, viewUrl).then(
        function(data, headers, status){
            DB = JSON.stringify(data.data.rows[0].value.name);
            return DB;
        }
    )
}

console.log(sendDB());

在上面的功能中,控制台会读取未定义的'而且我很困惑。我需要在其他函数中使用返回的值,所以任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:1)

您需要从sendDB()返回承诺。目前外部函数没有return

由于promise是异步的,因此您需要使用then()链接到函数调用

function sendDB() {
   // return the promise
   return couch.get(dbName, viewUrl).then(
        function(data, headers, status){
            DB = JSON.stringify(data.data.rows[0].value.name);
            return DB;
        }
    )
}
sendDB().then(function(DB){
    console.log(DB);
});