簡體   English   中英

Firefox OS中將大量數據導入indexedDB

[英]large amount of data into indexedDB in Firefox OS

我想將大量數據插入到indexedDB數據庫中。

數據大小約為5MB。

並超過77,000行。

我將數據庫轉換為“ all.js”文件,如下所示:

const AllData = [
{ id: 1, en: "10th", ar: "arabic word" },
{ id: 2, en: "1st", ar: "arabic word" },
{ id: 3, en: "2nd", ar: "arabic word" },
{ id: 4, en: "3rd", ar: "arabic word" },
{ id: 5, en: "4th", ar: "arabic word" },
{ id: 6, en: "5th", ar: "arabic word" },
{ id: 7, en: "6th", ar: "arabic word" },
{ id: 8, en: "7th", ar: "arabic word" },
{ id: 9, en: "8th", ar: "arabic word" },

to about 77,000


];

還有我的HTML和JavaScript代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

<script src="all.js" type="text/javascript"></script>


<script type="text/javascript">
/*
var custom = [
    {"id":1 ,"name":"hussein","email":"test@gmail.com"},
    {"id":2 ,"name":"ali","email":"test2@gmail.com"}

];
*/

var db;
var request = window.indexedDB.open("YesData13", 1);




request.onerror = function(event) {
  alert("Why didn't you allow my web app to use IndexedDB?!");
};


request.onsuccess = function(event) {
  db = event.target.result;





/*

var transaction = db.transaction(["data"], "readwrite");



transaction.oncomplete = function(event) {
  alert("All done!");
};


transaction.onerror = function(event) {
  // Don't forget to handle errors!
};




var objectStore = transaction.objectStore("data");




for (var i in AllData) {
  var request = objectStore.add(AllData[i]);
  request.onsuccess = function(event) {
    // event.target.result == customerData[i].ssn;
  };
}


*/


};






request.onupgradeneeded = function(event) { 
  var db = event.target.result;


  var objectStore = db.createObjectStore("data", { keyPath: "id" });
  //objectStore.createIndex("en","en",{unique:true});
  //objectStore.createIndex("ar","ar",{unique:false});


  for (var i in AllData){
    objectStore.put(AllData[i])

  }



};









/*
for (var i in AllData) {
  var request = objectStore.add(AllData[i]);
  request.onsuccess = function(event) {
    // event.target.result == customerData[i].ssn;
  };
}
*/





    function read() {
        var transaction = db.transaction(["data"]);
        var objectStore = transaction.objectStore("data");
        var request = objectStore.get(25001);
        request.onerror = function(event) {
          alert("Unable to retrieve daa from database!");
        };
        request.onsuccess = function(event) {
          // Do something with the request.result!
          if(request.result) {
            alert("id: " + request.result.id + ", English: " + request.result.en + ", arabic: " + request.result.ar);
          } else {
            alert("Kenny couldn't be found in your database!");  
          }
        };
    }




</script>
</head>


點擊這里

上面的代碼在firefox和google chrome中以及所有插入的行中都能很好地工作。 但是當在firefox os模擬器中嘗試時,它不起作用;當嘗試將行減少到25,000時,它可以正常工作。

我嘗試將其拆分成每個文件大約25000個文件,僅添加前25,000個,但不添加25,000個

從我自己在firefox os上對indexedDB進行的實驗來看,模擬器似乎對可以使用indexedDB存儲的數據量施加了相當小的限制。 我嘗試編寫腳本以將一堆隨機數據添加到單個數據庫中,並且模擬器沒有給我一個錯誤,但是它停止了大約12,000個條目后才允許我添加數據。 但是,如果我嘗試使用模擬器創建新數據庫,則會出現錯誤,提示超出配額。

但是,當我在電話上運行所有這些功能時,它一直在運行,我懷疑模擬器不能代表實際設備,因為Firefox應用程序沒有施加indexedDB限制。 因此,如果您可以進行測試,則您的應用應該可以在設備上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM