更改对象存储的主键值

Lew*_*wis 3 javascript indexeddb

keyPath如何更改对象存储的主键值 ( )?如果这是不可能的,IndexedDB 团队是否有计划支持此功能?

Jos*_*ell 5

您无法修改对象存储(或索引)的键路径。这样做需要将所有数据重新插入到存储中,这可能会失败(例如,如果存在约束失败),因此将其留给用户代码作为升级(版本更改)的一部分来执行此操作。

Indexed DB v2(至少在 Firefox 和 Chrome 中即将推出支持)允许您在架构更改期间重命名存储(和索引),因此您可以进行版本升级,创建新存储、复制数据、响应约束失败适当地删除旧存储,然后重命名新存储。不过,在“v2”支持广泛普及之前,您必须保留新名称。