2017-04-07 13 views
5

यह कोड मोंगोडीबी से डेटा लाने और '_id' तत्व को 'id element' में बदलने के बारे में है। लेकिन मुझे पता चला कि ऑब्जेक्ट सरणी नहीं बदली गई है।जावास्क्रिप्ट ऑब्जेक्ट सरणी नहीं बदला

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 
     }); 
    } 
}); 
के रूप में इस कोड काम

});

मुझे लगता है कि यह गहरी और उथली प्रतिलिपि से संबंधित है। लेकिन मुझे नहीं पता कि यह वास्तव में क्या कारण है।

धन्यवाद

उत्तर

2

क्योंकि Post.find रिटर्न बनाया स्कीमा के आधार पर वस्तु नेवला है यही कारण है कि। आप जो खोज रहे हैं वह toObject फ़ंक्शन है जो शुद्ध जावास्क्रिप्ट ऑब्जेक्ट देता है। तो अपने कॉलबैक कॉल में list.toObject(); आप toObject समारोह के बारे में अधिक नेवला के दस्तावेज में पढ़ सकते हैं:

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

वैकल्पिक रूप से, आप दुबला विकल्प है जिसके नेवला बता देंगे शुद्ध जावास्क्रिप्ट वस्तु वापस जाने के लिए उपयोग कर सकते हैं

संबंधित मुद्दे