在 normalizr 中重命名结果属性

Posted

技术标签:

【中文标题】在 normalizr 中重命名结果属性【英文标题】:Rename result property in normalizr 【发布时间】:2020-11-28 01:33:36 【问题描述】:

给定的数据如下:


  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...

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于在 normalizr 中重命名结果属性的主要内容,如果未能解决你的问题,请参考以下文章

从 Pandas 聚合中重命名结果列(“FutureWarning:不推荐使用带有重命名的字典”)

在解决方案资源管理器中重命名 .cs 属性的问题

在 Rails JSON 序列化中重命名模型关联属性?

在 JavaScript 中重命名 File() 对象

在 EF Core 3 中重命名 IdentityRole 表

如何在 Laravel 7 中重命名项目