2017-08-21 5 views
1

設定:私は方法を見つけ出すように見えることはできませんNormalizr - 私は、彼らがnameプロパティ「ユーザーは、」結果のオブジェクトに返されていることを正規化<a href="https://github.com/paularmstrong/normalizr/blob/master/docs/api.md#normalizedata-schema" rel="nofollow noreferrer">examples</a>に見た結果では、ネストされた応答のキー

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

を私が得ているネストされたAPI応答でこれを行う。私は正規化された応答の結果を渡そうとしているユーザーと住所の両方を持っています。

私はこのようになりますJSONレスポンスを持っています。こう

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] 
} 

私が本当に希望を

[ 
    { 
     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' 
       } 
      ] 
     } 
    } 
] 

私のスキーマは、このようになりますlikeは結果オブジェクトで、ユーザとその中のアドレスの両方を持つことです:

{ 
    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

これは可能ですか?

いいえ。resultの値は、スキーマごとの入力データの最上位構造と常に一致するように設定されています。入力データに第1レベルのキーaddressesがない場合、それは不可能です。

+0

バマーですが、意味があります。早速のご返事ありがとうございます。 – Obscenity

関連する問題