代码之家  ›  专栏  ›  技术社区  ›  Obscenity

normalizer-设置结果中嵌套响应的键

  •  2
  • Obscenity  · 技术社区  · 9 年前

    examples

    {
      result: { users: [ 1, 2 ] },
      entities: {
        users: {
          '1': { id: 1 },
          '2': { id: 2 }
        }
      }
    }
    

    我有一个JSON响应,如下所示:

    [
        {
            id: 1
            first_name: First,
            last_name: Last,
            address: {
                data: [
                    {
                        id: 1,
                        address_one: '123 Street Ave',
                        address_two: '',
                        city: 'Some City',
                        state: 'CA',
                        zip: '1234'
                    }
                ]
            }
        },
        {
            id: 1
            first_name: First,
            last_name: Last,
            address: {
                data: [
                    {
                        id: 2,
                        address_one: '123 Street Ave',
                        address_two: '',
                        city: 'Some City',
                        state: 'CA',
                        zip: '1234'
                    },
                    {
                        id: 3,
                        address_one: '321 Avenue Road',
                        address_two: 'Suite 101',
                        city: 'Some City',
                        state: 'CA',
                        zip: '1234'
                    }
                ]
            }
        }
    ]
    

    我的模式如下所示:

    import { schema } from 'normalizr'
    
    /**
     * Addresses
     */
    const address = new schema.Entity('addresses');
    const arrayOfAddresses = new schema.Array(address);
    
    /**
     * User
     */
    export const user = new schema.Entity('users', {
       addresses: arrayOfAddresses
    });
    
    user.define({
        addresses: {
            data: arrayOfAddresses
        }
    })
    
    export const arrayOfUsers = new schema.Array(user)
    

    正在执行: let result = normalize(data, schema.arrayOfUseres)

    {
        entities: {
            addresses: /* The address data */
            users: /* The users with an array of the address ids attached to them*/
        },
        result: [1, 2]
    }
    

    我真正想要的是结果对象中同时包含用户和地址:

    {
        entities: {
            addresses: /* The address data */
            users: /* The users with an array of the address ids attached to them */
        },
        result: {
            addresses: [1, 2, 3]
            users: [1, 2]
        }
    }
    

    import * as schema from './schema'
    normalize(data, { users: [schema.user], addresses: [schema.address] }
    

    但这只是出错并将数据返回到结果对象中。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Paul Armstrong    9 年前

    这可能吗?

    不是的 result addresses ,这是不可能的。