我正在尝试使用normalizr规范化以下数据。我希望能够轻松提取位置对象。更具体地说,我希望将电影对象嵌套在位置对象
中我的代码: 从ajax调用(results.data)中检索数据后,我想将其展平。
const location = await new schema.Entity(
'locations',
{},
{
idAttribute: '_id'
}
);
const movie = await new schema.Entity(
'movies',
{ locations: [location] },
{
idAttribute: '_id'
}
);
const normalizedData1 = normalize(result.data, movie);
我想要规范化的数据:
[
{
_id: '59c7698d544d56b262e2187e',
title: 'tomorrow never die',
__v: 0,
locations: [
{
address: 'lasselle strasse 12 39114 magdeburg',
lng: '11.6571759',
lat: '52.1229847',
_id: '59c7698d544d56b262e21880'
},
{
address: ' hindhede place 12 587852 singapore',
lng: '103.7760416',
lat: '1.3454118',
_id: '59c7698d544d56b262e2187f'
}
]
},
{
_id: '59c76a87544d56b262e21881',
title: 'today is the day',
__v: 0,
locations: [
{
address: '1 high street flemington 3031',
lng: '144.933632',
lat: '-37.784413',
_id: '59c76a87544d56b262e21883'
},
{
address: ' 18 rue benoit malon',
lng: '2.3515209',
lat: '48.8071822',
_id: '59c76a87544d56b262e21882'
}
]
},
{
_id: '59c76aeca1429ab37e9d40bd',
title: '3 days to go',
__v: 0,
locations: [
{
address: '35 Nasse Wenne Paderborn',
lng: '8.7262077',
lat: '51.73028189999999',
_id: '59c76aeca1429ab37e9d40be'
}
]
},
{
_id: '59c76b6788e12ab3a6d90fea',
title: 'X men',
__v: 0,
locations: [
{
address: '18 rue benoit malon sevres france',
lng: '2.2042506',
lat: '48.817549',
_id: '59c76b6788e12ab3a6d90feb'
}
]
}
];
当前输出:
{
"entities": {
"movies": {
"undefined": {
"0": {
"_id": "59c7698d544d56b262e2187e",
"title": "tomorrow never die",
"__v": 0,
"locations": [
{
"address": "lasselle strasse 12 39114 magdeburg",
"lng": "11.6571759",
"lat": "52.1229847",
"_id": "59c7698d544d56b262e21880"
},
{
"address": " hindhede place 12 587852 singapore",
"lng": "103.7760416",
"lat": "1.3454118",
"_id": "59c7698d544d56b262e2187f"
}
]
},
"1": {
"_id": "59c76a87544d56b262e21881",
"title": "today is the day",
"__v": 0,
"locations": [
{
"address": "1 high street flemington 3031",
"lng": "144.933632",
"lat": "-37.784413",
"_id": "59c76a87544d56b262e21883"
},
{
"address": " 18 rue benoit malon",
"lng": "2.3515209",
"lat": "48.8071822",
"_id": "59c76a87544d56b262e21882"
}
]
},
"2": {
"_id": "59c76aeca1429ab37e9d40bd",
"title": "3 days to go",
"__v": 0,
"locations": [
{
"address": "35 Nasse Wenne Paderborn",
"lng": "8.7262077",
"lat": "51.73028189999999",
"_id": "59c76aeca1429ab37e9d40be"
}
]
},
"3": {
"_id": "59c76b6788e12ab3a6d90fea",
"title": "X men",
"__v": 0,
"locations": [
{
"address": "18 rue benoit malon sevres france",
"lng": "2.2042506",
"lat": "48.817549",
"_id": "59c76b6788e12ab3a6d90feb"
}
]
}
}
}
}
}
答案 0 :(得分:1)
由于result.data
是一个数组,因此您需要使模式也针对数组进行规范化。最简单的方法是调用normalize
:
const normalizedData1 = normalize(result.data, [ movie ]);
答案 1 :(得分:-1)
这就是我最终的结果
const location = await new schema.Entity(
'locations',
{},
{
idAttribute: '_id'
}
);
const movie = await new schema.Entity(
'movies',
{ locations: [location] },
{
idAttribute: '_id'
}
);
const movieListSchema = [movie];
const normalizedData = normalize(result.data, movieListSchema);