作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将不同的字符串放入 IndexedDb 中。我可以将它们作为没有值的键(对于indexedDb来说相当新,所以甚至不知道这是否可能)。现在的问题是,每次读取这些字符串时,它们都会被重复放入 IndexDb 中。不想编写另一个方法来检查这些值是否已经存在,以保持方法的可重用性。我相信应该有一种方法可以重写 upgradeDb.createObjectStore('categories', { autoIncrement: true });
来做到这一点,只是找不到方法。我的代码:
使用表创建数据库:
function idbOpen() {
return idb.open('greedy', 1, upgradeDb => {
upgradeDb.createObjectStore('categories', { autoIncrement: true });
});
}
写入数据库:
putArrayToDb = (tableName, arrayToPut) => {
if (this.dbPromise) {
this.dbPromise.then(db => {
if (!db) return;
var tx = db.transaction(tableName, 'readwrite');
var store = tx.objectStore(tableName);
arrayToPut.map(arrayItem => {
store.put(arrayItem);
});
})
}
}
putArrayToDb('categories', ["value1", "value2", "value3"]);
提前致谢。
最佳答案
由于您想使用字符串作为键,因此 autoIncrement
不是您想要的 - 它会为您生成键。
在定义对象存储时删除autoIncrement
选项,并简单地使用显式键和虚拟值(例如true
):
var DUMMY_VALUE = true;
arrayToPut.map(arrayItem => {
store.put(/*value=*/DUMMY_VALUE, /*key=*/arrayItem);
});
关于javascript - 如何只包含没有值的键,或者如何将不同的值放入 IndexedDb 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47343584/
我是一名优秀的程序员,十分优秀!