2017-09-24 1 views
1

Ich versuche, die folgenden Daten mit normalizr zu normalisieren. Ich möchte in der Lage sein, die Standortobjekte einfach zu extrahieren. Genauer gesagt suche ich nach dem Film-Objekt geschachtelt innerhalb des StandortobjektsProbleme Normalisierung Daten mit normalizr reagieren

Mein Code: Nach dem Abrufen von Daten von einem Ajax-Aufruf (results.data) möchte ich es dann abflachen.

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); 

Die Daten, die ich zu normalisieren versuche:

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

Stromausgang:

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

Antwort

-1

Dies ist, was ich mit

endete
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); 
1

Da result.data ist ein Array, müssen Sie das Schema machen Sie gegen eine Normalisierung sind auch Array. Der einfachste Weg, dies zu tun, ist in dem Aufruf von normalize:

const normalizedData1 = normalize(result.data, [ movie ]); 
+0

Ja, das ist, was ich auch bekam. Vielen Dank. –

Verwandte Themen