【问题标题】:punchDB / allDocs / .then return a valuepunchDB / allDocs / .then 返回一个值
【发布时间】:2015-05-13 01:49:36
【问题描述】:

我是 js 和 punchDB 的新手,从 pounchDB 获取数据时遇到问题

这在获取数据和处理过程中很常见

 db.allDocs({include_docs: true}).then(function (result) {
    console.log( result.rows);
 }));

但我想返回“result.rows”

var result = db.allDocs({include_docs: true}).then(function (result) {
    return  result.rows;
}));

是的,我可以通过跳过 .then 获得 allDocs 函数输出

var result= db.allDocs({include_docs: true});

但它是一个复杂的输出

我也找到了这个链接 http://andyshora.com/promises-angularjs-explained-as-cartoon.html

当我们有 .then 时解释 return 但它不适用于 allDocs

【问题讨论】:

  • var result 不会得到result.rows,而是承诺得到results.rows。所以,迟到的时候你需要做result.then(function(rows){ console.log(rows); })
  • 我从你的评论中得到,我做了一些事情,比如把对象放在字符串中(用 C# 语言)对吗?你能详细解释一下你的解决方案吗?

标签: javascript angularjs pouchdb


【解决方案1】:

我假设您执行以下操作:

var result = db.allDocs({include_docs: true}).then(function (result) {
    return result.rows;
});

console.log(result); // I expect to see rows here

这行不通,因为result 不是行 - 这是获取行的承诺。实际结果将在稍后以异步方式到达那里。

因此,如果您在某个函数或服务中执行此操作,并且您执行了return result,那么该函数的使用者仍需要执行.then。这就是我的意思:

function getRows(){
  var result = db.allDocs({include_docs: true}).then(function (result) {
        return result.rows;
  });

  return result;
}

getRows().then(function(rows){
   console.log(rows); // actual rows
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-10
    • 2020-04-02
    • 2020-09-14
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2018-12-27
    • 2019-02-02
    相关资源
    最近更新 更多