簡體   English   中英

如何檢查 IndexedDB 數據庫是否已存在?

[英]How do I check if an IndexedDB database already exists?

我正在餐廳網站(客戶端項目)上工作並面臨這個問題,我想制作一個管理頁面將向我顯示客戶下的所有訂單以及我選擇將訂單詳細信息保存在本地存儲中的方式將它保存在這個 indexedDB 中,然后在管理頁面上顯示(訂單),所以我編寫了這段代碼,它工作得很好我猜想保存訂單和所有客戶詳細信息

document.getElementById('submittheorder').onclick = function() {
    let i = 0;
    const versionDB = 1;

    let indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB;

    var open = indexedDB.open("CustomersOrders", versionDB);

    open.onupgradeneeded = function() {
        let db = open.result;
        let store = db.createObjectStore("OrdersTable", {
            keyPath: "id"
        });
        let index = store.createIndex("CIndex", ["FullName", "Order", "House", "Road", "Block"]);
    };

    open.onsuccess = function() {

        let db = open.result;

        let tx = db.transaction("OrdersTable", "readwrite");

        let store = tx.objectStore("OrdersTable");

        let index = store.index("CIndex");

        store.put({
            FullName: (sessionStorage.getItem("Cfullname")),
            Order: (sessionStorage.getItem("order")),
            House: (sessionStorage.getItem("CHouse")),
            Road: (sessionStorage.getItem("CRoad")),
            Block: (sessionStorage.getItem("CBlock"))
        });


        tx.oncomplete = function() {
            db.close();
            location.href = "Thanks.html";
        };
    }
}

現在的問題是我想檢索所有訂單和每個 object 的詳細信息到管理頁面第二個問題是我想檢查數據庫是否已經存在然后插入新的 object 不創建新數據庫並只保存一個 ZA8CFDE6331BD49EB2AC96F891簡而言之,我只想制作一個數據庫,然后下次將訂單保存在該數據庫中。

謝謝:)

您可以將此邏輯放在處理升級事件的 function 中。 基本上有兩種方式。 您可以檢查 object 存儲和索引是否存在,例如使用db.objectStoreNames.contains() ,或者您可以通過訪問數據庫 object 或事件 ZA8CFDE6331BD59EB2AC966F8911Z46.B 中的版本屬性來比較版本

例如,如果 object 存儲不存在,您可能只想創建它。 如果它不存在,那么您知道這是創建數據庫的時間。

暫無
暫無

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

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