0

ユーザーが多くの猫をお気に入りに登録しており、ユーザーのお気に入りを尋ねられたときに API エンドポイントが猫のリストを提供するとします。

const catsList = [{id:1,name:"catA"},{id:2,name:"catB"},{id:3,name:"catC"}];

// ex: GET http://app.com/api/favorites =>  results in following json
{favorites:[{id:2,name:"catB"},{id:3,name:"catC"}]} 
// the result is the list of cats 

//and normalizr schema 
const cats = new Schema('cats');
const favorites = new Schema('favorites');

今私の質問は、次の結果が得られるようにこれらのエンティティをどのように正規化するかです。

  entities.favorites=[2,3]; //2 and 3 are cats
  entities.cats=[{id:1,name:"a"},{id:2,name:"b"},{id:3,name:"c"}];

normalizr でこれを達成するにはどうすればよいですか?

4

1 に答える 1

0

何かのようなもの

const cats = new Schema('cats');

const response = {
  favorites: [{
    id: 2,
    name: "catB"
  }, {
    id: 3,
    name: "catC"
  }]
}

const normalized = normalize(response, {
  favorites: arrayOf(cats)
})

normalized値は次のようになります

{
  result: {
    favorites: [2, 3]
  },
  entities: {
    cats: {
      2: {
        id: 2,
        name: "catB"
      }, {
        id: 3,
        name: "catC"
      }
    }
  }
}

実際にnormalized.entitiesは、配列ではなくオブジェクトであることが非常に重要です。そうしないと、ID によるクエリが遅くなります。

この時点で、この表現を好きなように自由に変換できます。

于 2016-03-07T03:13:52.593 に答える