2017-04-07 1 views
5

Dieser Code ist über Abrufen von Daten aus MongoDB und Ändern von '_id' Element zu 'ID-Element. Aber ich habe festgestellt, Objekt-Array wird nicht geändert.JavaScript-Objekt-Array ist nicht geändert

router.get('/loadList', (req,res) => { 
Post.find({}, (err, list) => {   //fetching data to list 
    if(err) { 
     return res.json({success : false}); 
    } else { 
     let new_list; 

     //change _id to id 
     new_list = list.map((obj) => { 
      obj.id = obj._id; 
      delete obj._id; 
      return obj; 
     }); 

     console.log(new_list); 

    /* 
    // _id is still here and id is not created 
    [{_id: '58e65b2d1545fe14dcb7aac5', 
    title: 'asdfassafasdf', 
    content: 'dfasfdasdf', 
    time: '2017-04-06T15:13:49.516Z', 
    writer: { _id: '100975133897189074897', displayName: 'Kiyeop Yang' }, 
    coords: { y: '310.3999786376953', x: '139' }, 
    __v: 0 } ] 
    */ 

aber dieser Code Arbeit wie das, was ich will

 let list2 = JSON.parse(JSON.stringify(list)); 
     new_list = list2.map((obj) => { 
      obj.id = obj._id; 
      delete obj._id; 
      return obj; 
     }); 
     console.log(new_list); 
    /* 
    // _id is deleted and id is created 
    { title: 'asdfassafasdf', 
    content: 'dfasfdasdf', 
    time: '2017-04-06T15:13:49.516Z', 
    writer: { _id: '100975133897189074897', displayName: 'Kiyeop Yang' }, 
    coords: { y: '310.3999786376953', x: '139' }, 
    __v: 0, 
    id: '58e65b2d1545fe14dcb7aac5' } ] 
*/ 

     return res.json({ 
      success : true, 
      list 
     }); 
    } 
}); 

});

Ich denke, es ist mit tiefen und seichten Kopie verwandt. Aber ich weiß nicht, was genau es verursacht.

Dank

Antwort

2

Das ist, weil Post.find kehrt Objekt auf Basis erstellt Schema Mungo. Was Sie suchen, ist toObject Funktion, die reines Javascript-Objekt zurückgibt. Also in Ihrem Rückruf Anruf list.toObject(); Sie können mehr über toObject Funktion in Mungo Dokumentation lesen: http://mongoosejs.com/docs/api.html#document_Document-toObject

Alternativ können Sie schlanke Option verwenden, die Mungo erzählen reines Javascript-Objekt zurück:

Verwandte Themen