У меня возник вопрос при попытке удалить под-документ из MongoDB.lodash удаляет все объекты из массива. Не соответствует моей спецификации
Вот моя структура данных:
"event" : {
"_id": "581fec8011acfb28f6bb0b96",
"participants": [
{
"_id": "582041475aa37c0e27fde28b",
"regDate": "2016-11-07T08:54:31.155Z",
"group": "board member",
"lastName": "1",
"firstName": "test",
"eventCode": "07e05d"
},
{
"_id": "5820414b5aa37c0e27fde28c",
"regDate": "2016-11-07T08:54:35.462Z",
"group": "participant",
"lastName": "2",
"firstName": "test",
"eventCode": "f1685a"
},
{
"_id": "5820414e5aa37c0e27fde28d",
"regDate": "2016-11-07T08:54:38.441Z",
"group": "participant",
"lastName": "3",
"firstName": "test",
"eventCode": "a71ec5"
}
]
}
Я пытался использовать lodash для удаления одного участника, но lodash удалить все мои участников. Можете ли вы помочь мне решить эту проблему?
Я обновил весь код на стороне сервера, где имеет проблему
var alias = req.params.alias;
var pid = req.params.pid;
var findAndRemoveParticipant = new Promise ((resolve, reject) => {
Event.findOne({
"alias":alias
},'participants')
.exec((err, event) => {
if(err) reject(err)
else {
_.remove(event.participants, {_id: pid});
event.save((err, saved) => {
err ? reject(err) : resolve(saved)
})
}
})
});
findAndRemoveParticipant
.then(saved => {
res.status(200).json('Participant removed successfully');
})
.catch(err => res.status(400).json(err));
В стороне клиента я использую тот же код, и она работает
$http.delete(_deleteParApi)
.success(msg => {
$scope.parRemoved = msg;
_.remove($scope.participants,{_id: pid})
})
.catch(err => {
console.log(err);
})
Спасибо за это, я решил свою проблему. Но я до сих пор не понимаю, почему lodash не работает в моей ситуации. Это так странно. –