You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中Dexie DB更新项日志正常但旧值残留问题

问题解决思路

首先看你的更新语句,存在一个关键的大小写匹配问题:
你在update方法里写的是Selection(首字母大写),但TagItem对象的属性是selection(首字母小写),Dexie对字段名严格区分大小写,这就导致你实际没有更新到目标字段,数据库里的selection值自然还是旧的。

修复步骤

  1. 统一字段名大小写,把更新语句里的Selection改成小写的selection:
await db.TagItem.update(tagItem.id, {
  tags: tagItem.tags,
  selection: tagItem.selection, // 修正为小写s
  isFlipped: tagItem.isFlipped,
});
  1. 另外检查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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:00:42