0

假设我有以下索引值架构:db.version(1).stores({friends: "++id,name"});

此外,我的朋友对象有一个名为 的非索引道具phoneNumber,因此在 IndexedDB 中每一行都有id, name, phoneNumber.

如果我稍后决定phoneNumber不再需要,phoneNumber从现有行中删除的正确方法是什么?是否应该在upgrade方法内完成?

4

1 回答 1

1

我对dexie了解不多,但一般来说,我不会使用升级的方式来进行这个改动。升级数据库通常是为模式更改而保留的。更改非索引、非键属性不是架构更改。

删除 phoneNumber 属性的正确方法是遍历朋友对象存储中的所有朋友,读取每个朋友对象,删除 phoneNumber 属性,然后将朋友对象写回存储。

您可以将此更改作为函数,并通过升级将其添加到一组迁移函数调用中,但这只是主观的。如果您的应用程序被编码为您需要更改数据库版本来执行此操作,我只会建议您这样做。但在这里听起来更像是您的应用程序本身的版本更改。这不会影响数据库的版本。因此,这应该与您的应用程序版本更改处理程序的迁移功能相关联。

于 2016-11-01T21:41:59.297 回答