在 normalizr 中重命名结果 属性

Rename result property in normalizr

给出的数据如下:

{
  id: 1,
  ownerName: 'bob',
  devices: [
    {
      id: 2
    },
    {
      id: 3
    }
  ]
}

如何将其转换为以下对象

{
  result: 1,
  entities: {
    owners: {
      1: {
        id: 1,
        ownerName: 'bob',
        deviceIds: [2, 3]
      }
    },
    devices: {
      2: {
        id: 2
      },
      3: {
        id: 3
      }
    }
  }
}

使用 normalizr?我不知道如何在返回的结果中将 devices 更改为 deviceIds...

您可以为此使用流程策略。它允许您在处理数据之前对其进行操作。只需 return 对象的副本,其中键从 processStrategy() 方法更改。

const Device = schema.Entity('devices');

const Owner = schema.Entity(
    'owners',
    {
        deviceIds: [ Device ]
    },
    {
        processStrategy: value => ({
            id: value.id,
            ownerName: value.ownerName,
            deviceIds: value.devices
        })
    }
);