2015-04-07 58 views
0

我使用的是PouchDB数据库:jQuery的价值没有被保留

我发现,-1就是被插入replace()通话。

console.log(result.total_rows);显示5(这是我所期望的)。

为什么不是totalRows保存这个值?

 var totalRows = -1; 
     fDatabase.allDocs().then(function(result) { 
      console.log(result); 
      console.log(result.total_rows); 
      totalRows = result.total_rows; 
     }).catch(function(error) { 
      console.log(error); 
     }); 

     var descriptionText = $('#description'); 

     // -1 is coming up here instead of 5??? 
     descriptionText.text(descriptionText.text().replace('__NUMBER__', totalRows)); 

回答

3

因为allDocs方法是异步的,所以完成之前查询并totalRows与正确的计数更新您的替代方法将得到执行。

解决方法是将更新描述代码放在成功回调中。

var totalRows = -1; 
fDatabase.allDocs().then(function (result) { 
    console.log(result); 
    console.log(result.total_rows); 
    totalRows = result.total_rows; 
    //since it is async need to place it in the callback 
    var descriptionText = $('#description'); 
    // -1 is coming up here instead of 5??? 
    descriptionText.text(descriptionText.text().replace('__NUMBER__', totalRows)); 
}). 
catch (function (error) { 
    console.log(error); 
}); 
+0

感谢 - 修复它。当定时器到期时,我会在几分钟内接受这个答案。出于兴趣(如果你熟悉PouchDB),如果我想检索每个保存的对象,你知道我能做到的最好方法吗?看起来'allDocs'只是返回所有的_id,而不是实际的数据记录。 – b85411

+0

@ b85411对不起,还没有使用PouchDB ... –

+0

'db.allDocs({include_docs:true})' – nlawson