Javascript 在RJS中应用arrayOf(';schema';)之前如何展平数组
假设一个用户喜欢很多猫,当询问用户的最爱时,api端点会给出猫的列表:Javascript 在RJS中应用arrayOf(';schema';)之前如何展平数组,javascript,normalizr,Javascript,Normalizr,假设一个用户喜欢很多猫,当询问用户的最爱时,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 res
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"}];
我如何使用normalizer实现这一点
const cats = new Schema('cats');
const response = {
favorites: [{
id: 2,
name: "catB"
}, {
id: 3,
name: "catC"
}]
}
const normalized = normalize(response, {
favorites: arrayOf(cats)
})
标准化的值如下
{
result: {
favorites: [2, 3]
},
entities: {
cats: {
2: {
id: 2,
name: "catB"
}, {
id: 3,
name: "catC"
}
}
}
}
实际上,非常重要的一点是,规范化。实体
是一个对象,而不是一个数组,否则按ID查询会很慢
在这一点上,您可以随意变换此表示