2017-04-07 7 views
5

このコードは、MongoDBからデータを取り出し、 '_id'要素を 'id要素'に変更することについてです。 しかし、オブジェクト配列が変更されていないことがわかりました。 javascriptオブジェクト配列は変更されていません

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 } ] 
    */ 

が、私は

 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 
     }); 
    } 
}); 
を望むものとして、このコードの動作

});

深く浅いコピーと関連していると思います。 しかし、私はそれが何の原因であるのかは分かりません。 Post.findリターンが作成したスキーマに基づいてオブジェクトをマングースためだ

おかげ

答えて

2

。あなたが探しているのは、純粋なjavascriptオブジェクトを返すtoObject関数です。 だからあなたのコールバック呼び出しでlist.toObject(); あなたはマングースのドキュメントにtoObject機能についての詳細を読むことができます:

http://mongoosejs.com/docs/api.html#document_Document-toObject

また、あなたは純粋なjavascriptオブジェクトを返すためにマングースを教えてくれますリーンオプションを使用することができます

関連する問題