【发布时间】:2017-10-21 05:35:28
【问题描述】:
我在 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());
在上面的函数中,控制台读取'undefined',我很困惑。我需要在其他函数中使用返回值,因此将不胜感激任何帮助。谢谢
【问题讨论】:
-
这不能回答您的问题,但您的函数参数有问题,
function(data, headers, status)。该函数被传递给then,因此它只有一个参数,就像任何其他承诺一样。这个特定的 API 传递一个包含 3 个属性的对象,data、header和status。一些node-couchdb示例使用解构,例如function({data, headers, status}),将对象拉开。请注意代码中缺少的大括号。如果你有旧版本的 Node,它可能不支持解构。
标签: javascript node.js asynchronous promise