2017-03-08 60 views
0
{ 
    "_id": "58be5a4a031372098578b1d6", 
    "name": "A", 
    "email": "[email protected]", 
    "username": "A.a", 
    "password": "$2a$05$GAF1hP91EowKUTKr14ASL.MRd2lOjotfOgVlEghwnqctNcIe5seNW", 
    "latitude": 12, 
    "longitude": 72, 
    "profilePic": "images/A.png", 
    "__v": 9, 
    "isBuddyEnabled": true, 
    "friendRequests": [ 
    { 
     "friendId": "58be7aa0c204cb134068975d", 
     "isAccepted": true 
    }, 
    { 
     "friendId": "58bf8cb4c26d5811b188a600", 
     "isAccepted": false 
    } 
    ], 
    "friends": [ 
    "58be7aa0c204cb134068975d" 
    ], 
    "networkContacts": [ 
    { 
     "profession": "doctor" 
    } 
    ], 
    "interests": [ 
    "sports", 
    "music" 
    ] 
} 

我有一个用户上面的JSON,现在我需要这样的json的数组的所有信息,其friendRequest isAccepted是假的,这意味着这些请求正在等待对他来说, 为如:当我打API /请求/ 58be5a4a031372098578b1d6 =>我得ID的信息58bf8cb4c26d5811b188a600REST API

到现在我能中检索其请求,通过下面的查询

app.post('/api/users/requests/:id'function(req,res){User.find({"_id":req.params.id}) 
    .find({"friendRequests.isAccepted":false},function(err,callback){}}) 

回答

1

可以使用不被接受的ID弹出阵列过滤器根据过滤

User.find({"_id":req.params.id}, function (err, user) { 

    var friendRequests = user.friendRequests.filter(function (fr) { 
    return fr.isAccepted == false; 
    }).pop(); 

    console.log(friendRequests); //logs { "friendId": "58bf8cb4c26d5811b188a600", "isAccepted": false 
}); 
+0

在数组中的子文档这个我已经实现了,但我需要得到friendId isAccepted的,其整个JSON是假 –

+0

也为上面的代码抛出“无法读取的不确定 财产‘过滤器’” –