带有子对象的 IndexedDB 多条目

IndexedDB multyentry with sub objects

假设我有一个名为 'project' 的 indexedDB objectStore,如下所示:

{
    name: 'Project name',
    description: '.....',
    users: [
        {
            name: 'Adam',
            role: 'admin'
        },
        {
            name: 'Mary',
            role: 'simpleUser'
        },
    ]
}

如何创建索引来检索特定用户的所有项目,例如 Adam 的所有项目?

我试过 objectStore.createIndex('byUser', 'users.name', { unique: false, multiEntry:true }); 但它不起作用。

不幸的是,键路径(即使是多条目)也不会遍历数组。

您需要在添加数据之前对其进行预处理,例如每条记录:

record.user_names = record.users.map(u => u.name);

...然后你可以使用:

objectStore.createIndex('byUser', 'users.user_names', { multiEntry:true });

在以下位置跟踪了对此的功能请求:https://github.com/w3c/IndexedDB/issues/35