假设我对索引值有以下架构:db.version(1).stores({friends: "++id,name"});
此外,我的朋友对象有一个名为phoneNumber
的非索引道具,因此在IndexedDB中每行都有id, name, phoneNumber
。
如果我稍后决定不再需要phoneNumber
,那么从现有行中删除phoneNumber
的正确方法是什么?应该在upgrade
方法中完成吗?
答案 0 :(得分:1)
我对dexie一无所知,但一般来说,我不会使用升级方法来执行此更改。升级数据库通常保留用于架构更改。更改非索引的非键属性不是架构更改。
删除phoneNumber属性的正确方法是迭代友元对象库中的所有朋友,读取每个朋友对象,删除phoneNumber属性,然后将friend对象写回商店。
您可以将此更改作为一项功能,并通过升级将其添加到一组迁移函数调用中,但这仅仅是主观的。如果您的应用程序已编码为您需要更改数据库版本以执行此操作,我建议您这样做。但这听起来更像是应用程序本身的版本更改。这不会影响数据库的版本。因此,这应该与您的应用版本更改处理程序的迁移功能绑定。