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));
});
所以我有这个有效的 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));
});