带有子对象的IndexedDB多项目

时间:2016-03-16 11:18:05

标签: indexeddb

假设我有一个名为' 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 });,但它无法正常工作。

1 个答案:

答案 0 :(得分:1)

不幸的是,密钥路径(即使是多项)也不会遍历数组。

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

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

...然后你可以使用:

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

跟踪功能请求:https://github.com/w3c/IndexedDB/issues/35