繁体   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