2016-12-23 42 views
0

我有對象的數組,我想要做的就是回到_id和personalInfo但它們合併成一個選擇從一個數組對象鍵並將其組合到另一個對象鍵

這是我的樣品陣列:

[ 
    { 
    "_id": "57c4085234b1ccad0e7780f8", 
    "personalInfo": { 
     "firstName": "Ryan", 
     "middleName": "sadsada", 
     "lastName": "Tan", 
     "nickname": "dsada", 
    }, 
    "deleted": false, 
    "updatedAt": "2016-08-29T10:02:58.900Z", 
    "createdAt": "2016-08-29T10:02:58.900Z", 
    } 
] 

我迄今所做的是這樣的:

Patient.find({ 
     'deleted' : false 
    }, 'personalInfo', function (err, patients) { 
     if (err) { 
      return res.send(err); 
     } 
     res.send(patients); 
    }); 

它給了我這樣的結果:

[ 
    { 
    "_id": "57c4085234b1ccad0e7780f8", 
    "personalInfo": { 
     "firstName": "Ryan", 
     "middleName": "sadsada", 
     "lastName": "Tan", 
     "nickname": "dsada" 
    } 
    } 
] 

我要的是,它應該返回對象的數組,這樣

[ 
    { 
    "_id": "57c4085234b1ccad0e7780f8", 
    "firstName": "Ryan", 
    "middleName": "sadsada", 
    "lastName": "Tan", 
    "nickname": "dsada" 
    } 
] 

我已經通過迭代與lodash的陣列,以獲得預期的結果,我想解決了這個問題。有沒有貓鼬類的方式,我不必手動迭代值給我相同的結果?

在貓鼬..你必須映射您在查詢的結果是數據

回答

0

其不可能的..你可以使用lodash或undescore libary映射你的數據很容易

var _ = require('lodash'); 
Patient.find({ 
    'deleted': false 
}, 'personalInfo', function(err, patients) { 
    if (err) { 
    return res.send(err); 
    } 
    var finalData = _.map(patients, function(obj) { 
    return { 
     "_id": obj._id, 
     "firstName": obj.personalInfo.firstName, 
     "middleName": obj.personalInfo.middleName, 
     "lastName": obj.personalInfo.lastName  
    } 
    }); 

    res.send(finalData); 
}); 
+0

是的,我已經做了同樣的工作來實現這一點。我認爲在貓鼬類查詢(如果有的話)上會有替代方法,而不是手動循環它。謝謝你告訴我它不能完成。我只會圍繞我們雙方的工作。乾杯 –

相關問題