Angular中Dexie DB更新项日志正常但旧值残留问题
问题解决思路
首先看你的更新语句,存在一个关键的大小写匹配问题:
你在update方法里写的是Selection(首字母大写),但TagItem对象的属性是selection(首字母小写),Dexie对字段名严格区分大小写,这就导致你实际没有更新到目标字段,数据库里的selection值自然还是旧的。
修复步骤
- 统一字段名大小写,把更新语句里的
Selection改成小写的selection:
await db.TagItem.update(tagItem.id, { tags: tagItem.tags, selection: tagItem.selection, // 修正为小写s isFlipped: tagItem.isFlipped, });
- 另外检查
onEdited方法,调用updateItem时没有加await,虽不会直接导致更新失效,但可能引发后续逻辑时序问题,建议补充:
async onEdited(tagItem: TagItem) { console.log("Id: " + tagItem.selection); await this.updateItem(tagItem); // 添加await保证执行顺序 }
额外排查点
如果改完大小写仍有问题,可以做以下检查:
- 确认Dexie数据库表定义里的字段名是
selection(小写),和实体类属性保持一致 - 打开浏览器开发者工具(Application -> IndexedDB),直接查看数据库内的字段名和值,验证更新操作是否真正执行
内容的提问来源于stack exchange,提问作者Persson_F
相关产品推荐
相关产品推荐

