2016-02-10 155 views
0

所以我有这方面的工作PouchDB查询打印出结果到控制台: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 
    }); 
} 

现在我想从其他函数中调用这个函数,并返回结果。我无法做到这一点。我知道结果在查询范围内。

请辞的“db.query”前一个“回”如果我把它打印出来与返回一个空对象:

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

我不知道这是否是一个好主意,使该功能。我应该在“//句柄结果”部分写下我的代码吗?

回答

1

您无法从异步函数返回同步值。相反,你可以使用一个回调:

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

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

,或者返回一个承诺,并用它来检索值:

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)); 
}); 
+0

谢谢您的快速答复。我现在就试试。我假设代码的异步运行存在问题。 – VapoRizer