PouchDB:Return query() 结果对象

PouchDB: Return query() result object

所以我有这个有效的 PouchDB 查询,它将结果打印到控制台:

getActiveProjects();

function getActiveProjects() {
    function map_allActivePrj(doc) {emit(doc.projectStatus);}

    db.query(map_allActivePrj, {
        key          : '1',
        include_docs : true
    }).then(function (result) {
        // handle result
        console.log(JSON.stringify(result.rows, null, 4));          
    }).catch(function (err) {
        // handle errors
    });
}

现在我想从另一个函数调用这个函数并 return 结果。我做不到。我知道结果在查询范围内。

将 "return" 放在 "db.query" 前面 returns 一个空对象,如果我打印出来的话:

console.log(JSON.stringify(getActiveProjects()));

我不确定实现此功能是否是个好主意。我应该在“//处理结果”部分编写我的代码吗?

您不能 return 来自异步函数的同步值。相反,您可以使用回调:

function getActiveProjects(cb) {
  ...
  }).then(function(result) {
    // do stuff
    cb(result);
  }).catch(...
}

getActiveProjects(function(result) {
  console.log(JSON.stringify(result));
});

或 return 承诺并使用它来检索值:

function getActiveProjects() {
  ...
  return db.query(map_allActivePrj, {
    key: '1',
    include_docs: true
  }).then(function(result) {
    // do stuff
    return Promise.resolve(result);
  }).catch( ...
}

getActiveProjects().then(function(result) {
  console.log(JSON.stringify(result));
});