1

API から受け取る応答を正規化したいと考えています。典型的な応答は次のようになります。

// Get all projects
{data:[
    {
        id: 1
        ...
        team:{
            data: {
                id:15
                ...
            }

        }
    },
    {
        id:2,
        ....
    },
    {
        id:3,
        ...
    }
]}

「データ」コンテナーを削除するようにスキーマを作成するにはどうすればよいですか? 現在、私のスキーマは次のようになっています。

export const project = new schema.Entity('projects', {
    team: team, // team omitted
},
{
    processStrategy: (value, parent, key) => parent.data
}
)

export const arrayOfProjects = new schema.Array(project)

そして、私はそれを次のように使用しています:

const normalizedProjects = normalize(jsonResponse, arrayOfProjects)

normalizedProjectsは次のようになります。

{
    entities:{
        projects:{
            undefined:{
                0:{
                    team:{
                        data:{
                            id:15,
                            ...
                        }
                    }
                },
                1:{...},
                2:{...}.
                ...
                50:{...},
            }
        }
    },
    result:[] // length is 0
}

プロジェクトのリストが「未定義」に含まれている理由もわかりませんか?

4

2 に答える 2

1

json_api スキーマも使用します。こんな感じでいかがですか?

const projectsSchema = new schema.Entity('projects', {}, {
  processStrategy: processStrategy
});

export const processStrategy = (value, parent, key) => {
  const attr = value.attributes;
  delete value.attributes;
  return { ...value, ...attr };
};

export const fetchProjectsSchema = {
  data: [projectsSchema]
}
于 2017-01-10T08:04:46.480 に答える
0

省略したいエンティティ スキーマdata(または根本的に変更したもの) には、データを削除または変更するために記述するprocessStrategyを含める必要があります。(テストの他の例を参照してください)

于 2017-01-07T13:51:16.080 に答える