离线时,我正在使用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进行大量重写,因此我试图避免这种情况。
答案 0 :(得分:1)
IndexedDB不支持更改条目的主键,但是在dexie@3.x中,使用table.update()时通过删除/添加项来支持它。您可以使用npm install dexie @ next安装它。