PouchDb数据未在Get请求中更新

时间:2016-08-21 06:58:28

标签: javascript jquery pouchdb

您好我已经尝试从pouch db local database中获取数据。

这是我的代码。

function test(){

var jsondata;

var deviceId = localStorage.getItem("deviceId");    

localDB.get(deviceId).then(function(doc){                 

  jsondata = doc.data;

});
return jsondata}

test();

这里我可以在get函数中获取控制台数据,但是从最后一行我得到了未定义。

1 个答案:

答案 0 :(得分:0)

在解析promise之后执行函数内部的部分。

最后console.loglocalDB.get语句后立即执行。此时,承诺尚未解决,回调尚未执行,因此尚未设置jsondata的值 - 将undefined作为jsondata的值

修改1:

var jsondata;

var deviceId = localStorage.getItem("deviceId");    

localDB.get(deviceId).then(function(doc){                 

  jsondata = doc.data;
  console.log(jsondata)

  // whatever you want to do with `jsondata`,
  // do it here
});

// not here

编辑2:

如果要将此代码放在函数中,则应返回promise本身。所以你的代码变成了:

function getDoc(){

    var deviceId = localStorage.getItem("deviceId");    

    return localDB.get(deviceId);
}

现在使用代码中.then()的{​​{1}}解决此承诺,您需要使用jsondata

.
.
getDoc().then(function(doc){
    // your code that needs to use the document
});
.
.