如何使用normalizr分配与实体父级相关的 id/slug ?
例子:
用户调用的 API 响应:
{
id: '12345',
firstName: 'John',
images: [
{
url: 'https://www.domain.com/image0',
name: 'image0'
},
{
url: 'https://www.domain.com/image1',
name: 'image1'
}
]
}
我可以通过以下方式定义我的模式:
const image = new Schema('images');
const user = new Schema('users');
user.define({
images: arrayOf(image)
})
问题是图像没有id
属性,因此 normalizr 将无法区分它们,除非我们提供id
属性。当然,我们可以做类似的事情
const image = new Schema('images', { idAttribute: uuid.v4() });
并生成唯一标识符。
假设我们收到用户更新并且图像的名称已更新。因为我们在每个规范化中生成唯一标识符,所以我们无法识别和更新现有图像。
我需要一种方法来引用图像实体中的父实体(用户)(在其 id/slug12345-image0
中,12345-image1
或作为单独的属性。
实现这一目标的最佳方法是什么?