使用Dexie.js向IndexedDB保存含点记录键时遇到问题
解决Dexie.js保存带点键自动转为树形结构的问题
Dexie.js默认会把带点的键解析成嵌套对象,这是为了支持点符号查询的特性,但你可以通过添加操作选项来关闭这个行为:
- 在使用
add()、put()或批量操作bulkAdd()、bulkPut()时,传递{allowDotKeys: true}参数,就能强制保持原键名形式存储:// 单个记录保存 await db.yourTable.add({"showing.text.okey": "okey"}, {allowDotKeys: true}); // 批量保存 await db.yourTable.bulkAdd([ {"showing.text.okey": "okey"}, {"another.key.with.dots": "value"} ], {allowDotKeys: true});
关于你提到的“相同代码有时正常有时异常”,大概率是部分操作遗漏了这个选项——只有显式传入allowDotKeys: true的操作才会保留带点的键,没传的操作会沿用默认的解析逻辑。
保存完成后可以通过查询验证:
const record = await db.yourTable.get(yourRecordId); console.log(record); // 应该输出 {"showing.text.okey": "okey"} 而非嵌套结构
内容的提问来源于stack exchange,提问作者frostykitten
相关产品推荐
相关产品推荐

