使用dexie.js更新表“主键”

时间:2019-08-08 14:27:26

标签: javascript dexie

离线时,我正在使用dexie.js与用户本地系统上的IndexedDB表进行交互。当用户在线时,该表将同步回到服务器MariaDB表。将数据推送到服务器后出现问题,另一个用户可能已推送具有相同ID值的另一个值(用作主键)。因此,我将服务器ID值以JSON格式返回给本地系统以更新IndexedDB值,但是当我尝试这样做时,我遇到了问题,并且似乎无法更新ID值。

如果仅将添加的值更新为空,则update命令可以正常工作。

//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进行大量重写,因此我试图避免这种情况。

1 个答案:

答案 0 :(得分:1)

IndexedDB不支持更改条目的主键,但是在dexie@3.x中,使用table.update()时通过删除/添加项来支持它。您可以使用npm install dexie @ next安装它。