我不知道为什么,但由于某些原因,我无法使用PouchDB从indexedDB获取数据并将数据存储在变量中。
我有一个从我的数据库中获取所有数据的函数,如下所示:
load_all = function() {
var database = new PouchDB('ProjectDB');
var remoteCouch = false;
database.allDocs({include_docs: true, descending: true}, function(error, doc) {
if (error) ...
else {
if (doc.rows.length > 0) return doc.rows;
else ...
}
});
}
var projects = load_all();
console.log(projects); // will log 'undefined'
我不知道为什么它不会工作。
答案 0 :(得分:1)
看看行:
if (doc.rows.length > 0) return doc.rows;
您希望返回doc.rows
的内容,以便console.log(projects);
向您显示该内容,对吧?好吧,那不会发生什么。 return
语句将从回调函数(function(error, doc) {
)返回,而不是load_all
函数。如果你想进入doc.rows
,你需要在回调函数中进行。像这样:
if (doc.rows.length > 0) console.log(doc.rows);
这是必要的原因是因为IndexedDB是异步的。为了真正理解这意味着什么,以及为什么代码,如你所写,不能工作,我建议你谷歌一些关于IndexedDB或一般异步JavaScript的教程(对不起,我没有任何好的建议在我的顶部头)。