Javascript 如何在normalizer中为同一实体拥有多个标识符?
如果您有一个规范化的redux存储并使用实体ID,但也有其他唯一标识符并且还需要使用它们,您会怎么做 范例Javascript 如何在normalizer中为同一实体拥有多个标识符?,javascript,ecmascript-6,redux,normalizr,es6-map,Javascript,Ecmascript 6,Redux,Normalizr,Es6 Map,如果您有一个规范化的redux存储并使用实体ID,但也有其他唯一标识符并且还需要使用它们,您会怎么做 范例 { entities: { users: { 1: { name: 'foo', id: 1, //unique uuid: '3d89afe9-6a85-46ed-ac0d-28e10b21d09e' // unique },
{
entities: {
users: {
1: {
name: 'foo',
id: 1, //unique
uuid: '3d89afe9-6a85-46ed-ac0d-28e10b21d09e' // unique
},
// ...
}
}
}
大多数情况下,我使用id
属性来查找实体,但有时我只使用uuid
属性
有没有一种方法可以使用更高级的模式来创建第二个字典,将uuid
映射到id
,使用es6映射来创建一个由id
和uuid
组成的键,或者其他我没有想到的方法
以下是有用的:
{
entities: {
users: {
1: {
name: 'foo',
id: 1, //unique
uuid: '3d89afe9-6a85-46ed-ac0d-28e10b21d09e' // unique
},
// ...
}
usersUuidToIdMapping: {
'3d89afe9-6a85-46ed-ac0d-28e10b21d09e': 1
// ...
}
}
}
最好的,
Faruk如果要将
uuid
定义为id,可以在定义实体时在idAttribute
选项中使用字符串
new schema.Entity('users', {}, { idAttribute: 'uuid' })
如果要同时使用这两个参数,则idAttribute
可以是一个具有三个参数value
、parent
和键的函数
new schema.Entity('users', {}, {
idAttribute: user => user.uuid ? `${user.id}-${user.uuid}` : user.id
})
这里有更多信息:您好,谢谢,但我不想合并ID。我希望能够根据uuid或id查找项目。