关于indexedDB中IDBDatabase对象已生成但不能调用createObjectStore方法创建命名空间?

新手上路,请多包涵

indexedDB中IDBDatabase对象已生成但不能调用createObjectStore方法创建命名空间,提示Uncaught TypeError: Cannot read property 'createObjectStore' of undefined。
下面是代码

    var request = indexedDB.open("jusing"),
        db;
        user = {
            username: "jusing",
            age: 18,
            gender: "male",
            handsome: true
        }
    request.onsuccess = function() {
        db = event.target.result;
    }
    var store = db.createObjectStore("users", {keyPath: "username"});
    store.add(user);
阅读 2.9k
1 个回答

首先db根本没赋值,其次createObjectStore不能在onsuccess用。

要更新数据库的 schema,也就是创建或者删除对象存储空间,需要实现 onupgradeneeded 处理程序,这个处理程序将会作为一个允许你处理对象存储空间的 versionchange 事务的一部分被调用。

Using_IndexedDB

var request = indexedDB.open("jusing"),
    db;
user = {
    username: "jusing",
    age: 18,
    gender: "male",
    handsome: true
}
request.onupgradeneeded  = function() {
    db = event.target.result;
    var store = db.createObjectStore("users", { keyPath: "username" });
    store.add(user);
}
推荐问题