gpt4 book ai didi

angularjs - 向数据库中添加新值时,IndexedDB 引发错误

转载 作者:行者123 更新时间:2023-12-04 02:05:29 25 4
gpt4 key购买 nike

我在 IndexedDb 中创建了一个数据库成功但是当我尝试向数据库中添加一个值时,我看到以下错误:

DOMException: Failed to execute 'add' on 'IDBObjectStore': Evaluating the object store's key path did not yield a value.



代码片段:
let db = new AngularIndexedDB('myDb', 1);

db.createStore(1, (evt) => {
const objectStore = evt.currentTarget.result.createObjectStore('people', { keyPath: 'id', unique: true });
objectStore.createIndex("name", "name", { unique: false });
objectStore.createIndex("email", "email", { unique: true });
}).then(() => {
db.add('people', { name: 'name', email: 'email' }).then(() => {
}, (error) => {
console.log(error);
});

}, (error) => {
console.log(error);
});

我检查了表的名称。那是完全一样的。以及它的值各自的键。

我该如何解决这个问题?您能否分享对此错误的见解?

您的帮助将不胜感激。提前致谢。

最佳答案

当您使用键路径创建对象存储时:

 const store = db.createObjectStore('people', { keyPath: 'id' });

然后:
  • 您还必须指定存储应使用 key 生成器,即 {keyPath: 'id', autoIncrement: true} ,这将为您生成数字键 (1, 2, 3, ...) 并注入(inject)到值中;或:
  • 您存储的值必须已经包含与键路径匹配的属性,例如store.put({name: 'foo', id: 1234})

  • (另外, unique 不是对象存储的属性,只是索引。键在对象存储中始终是唯一的。)

    关于angularjs - 向数据库中添加新值时,IndexedDB 引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43756129/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com