我一直致力于chrome扩展项目。
我试图做的是存储输入值,并在按下特定按钮时将其拉出来。
下面是js的部分代码:
import { Dexie } from '../node_modules/dexie/dist/dexie.mjs';
var DBName = 'test';
buttonA.addEventListener('click', () => {
const inp = document.getElementById("inp");
const db = new Dexie(DBName);
db.version(2).stores({
friend: '++id, name'
});
db.friend.add({
name: inp.value
})
});
buttonB.addEventListener('click', () => {
const db = new Dexie(DBName);
const ch = db.friend;
console.log("Checking the value in DB: " + ch);
});
当我尝试使用它时,它会在点击buttonA后将任何输入保存到索引DB中(使用Chrome Developer Tool确认),但是当点击buttonB时,日志显示ch
是undefined
(db.friend.name
或db.name
也是如此)。因此,即使我使用get()
,它也会返回错误,因为我访问的是未定义的变量。
有人能帮我弄清楚为什么当我点击按钮B时,程序不能正确访问存在的索引DB吗?
- 谢谢-谢谢
1条答案
按热度按时间tzdcorbm1#
问题:
1.您的代码为每次单击创建一个新的Dexie。重用一个Dexie示例会更好、更快。如果您每次都创建一个新的Dexie示例,则必须在创建后关闭它以避免资源泄漏。
建议:
使用version().stores(...)宣告单一Dexie执行严修,让它为您填入'friend'属性。
此代码最好位于其自己的模块中(如“db.js')。
在需要存储或读取数据库的任何位置使用该单个Dexie示例。