nedb多db查詢數據不對的坑

nedb的初始化如下代碼,說明文檔建議讓使用autoload屬性

  var DB = new Datastore({
            autoload: true,
            filename: path.join(__userData,'db/test.db')
   })

但這個屬性還是有坑,如果只要一個db對象,使用過程中沒有問題,但如果需要同時操作多個Datastore,這時候就出問題了,

  that.$db.DB.count({}, function(err, count) {
                console.log("all ==" + count);
  });

單獨使用時,上面代碼每次輸出都是正確的數量,但多個datasotre同時操作,這個數量每次都會變
這樣就查詢不到正確的數據了,看介紹和源碼,nedb原理是db文件中保存的json字符串,然後轉成javascript對象在內存中處理,根據這樣,猜測引發這個問題的原因,應該就是讀寫速度
因爲同時操作多個db文件,nedb需要來回切換讀取不同db文件,但不確定哪裏導致沒有讀取完成就返回了。
但同時配置了autoload,理論應該會自動處理,但實際結果還是沒有,通過查看文檔,發現如果沒有設置autoload,需要手動調用loadDatabase的方法,才能繼續操作數據庫。經測試後,發現調用loadDatabase的回調方法中,繼續操作,可以返回正確的數據,同時操作多個db也正常了。
這個可能是個bug吧,但看GitHub上的nedb已經好久沒有維護了,應該沒有被修復的希望了,這篇文字希望能幫到遇到同樣問題的人。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章