在 IndexedDB 中创建多个方案

plicqrtu  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(1)|浏览(206)

我正在尝试使用 IndexedDB 创建多模式,实现的脚本是

const openDB = () => {
        var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB;

        // Create multiple schema
        // Create a dynamic Schema to append data
        var open = indexedDB.open("ExcelExtension", 1);
        open.onupgradeneeded = function () {
            var db = open.result;
            var store_sheet = db.createObjectStore("schema_1", { keyPath: "id" });
            var index = store_sheet.createIndex("NameIndex", ["name.last", "name.first"]);
        };

        open.onupgradeneeded = function () {
            var db2 = open.result;
            var store_sheet2 = db2.createObjectStore("schema_2", { keyPath: "id" });
            var index = store_sheet2.createIndex("NameIndex2", ["name.last", "name.first"]);
        };
    }

//html〈button onlick=“openDB()〉创建数据库
我做错了什么?脚本中没有错误,但它只反映了数据库中的一个模式
当我在浏览器上检查我的数据库时,我只能看到创建了一个模式x1c 0d1x

vh0rcniy

vh0rcniy1#

查看事件侦听器/处理程序在JavaScript中的工作方式。通常有两种方法可以注册事件处理程序:

// way 1
thing.onsomeevent = myEventHandler;
// way 2
thing.addEventListener('someevent', myEventHandler)

大多数情况下,使用哪种语法并不重要,因为大多数情况下您只注册一个事件处理程序。
但是,有时候会有很大的差异。这两种方法的差异在于,当您有多个事件行程常式时,属性指派方法会覆写所有已在一个事件行程常式中注册的事件行程常式。而在第二种方法中,则不会覆写。
您只能使用add事件侦听程式语法来注册多个事件行程常式。

相关问题