使用 dexie.js 更新 table 'primary key'

Updating table 'primary key' using dexie.js

我在离线时使用 dexie.js 与用户本地系统上的 IndexedDB table 进行交互。当用户在线时,这个 table 将同步回服务器 MariaDB table。将数据推送到服务器后我遇到了问题,另一个用户可能已经推送了具有相同 ID 值(用作主键)的另一个值。我因此return将servers ID值返回到本地系统,以JSON格式,更新IndexedDB值,但是当我尝试这个时我运行变成了一个问题,而且似乎不能更新 ID 值。

如果我只将附加值更新为空,则更新命令可以正常工作。

//SETTING UP THE INITAL TABLE
database.version(1).stores({
  table:          '++id,text,added'
});

//POPULATE TABLE WITH SOME DATA
database.on("populate", function() {
  database.table.add({id: 1, text: "Test Value", added: 1});
});

//UPDATE DATA
database.table.update(1, {id: 4, added: ''});  // DOESN'T WORK
database.table.update(1, {added: ''});  // WORKS

删除当前记录并使用新值重新插入它是唯一的选择吗?这将是一个问题,需要对我的 API 进行重大重写,所以我试图避免这种情况。

IndexedDB 不支持更改条目的主键,但在 dexie@3.x 中,使用 table.update() 时 removing/adding 项支持它。您可以使用 npm install dexie@next 安装它。