Я исследовал и видел вопросы о том, как удалить встроенные документы в mongodb/meteor здесь, в stackoverflow и на форумах метеоров. Но я не могу понять, почему у меня не работает $pull.
Застрял в этой проблеме в течение нескольких дней. У меня есть такая коллекция.
{
"_id": "N6QAJQpq4p5aYbpev",
"name": "Test Project",
"description": "description here",
"organization": "xPtaobSBQwxCKAJLN",
"members": [
{
"id": "3b7sbW3x487PzzJ6h",
"role": "manager",
"dateAdded": "2018-01-24T17:49:50.734Z"
},
{
"id": "n72PveQmdjcsvv5t5",
"role": "manager",
"dateAdded": "2018-01-24T17:49:53.545Z"
},
{
"id": "dSqzezqQjrzLeSTEw",
"role": "manager",
"dateAdded": "2018-01-24T17:50:11.177Z"
}
]
}`
мой метод обновления записи:
removeUserFromProj: (projId, memberId) =>{
Projects.update({ _id: projId }, {
$pull: { "members": { id: memberId } }
// $pull: { "members.id": memberId }
},
function (error, success) {
if (error) {
console.log('error: ', error);
}
if (success) {
console.log('updating user role: ' + success);
}
});
}
функция обратного вызова дает мне успех
но коллекция не обновляется.
Если я использую этот синтаксис // $pull: { "members.id": memberId }
, это дает мне эту ошибку:
simulating the effect of invoking 'removeUserFromProj' Error: After filtering out keys not in the schema, your modifier is now empty
Я также пытался использовать $pop вместо $pull. Он удаляет последнюю запись в моей коллекции.
Я использую метеор SimpleSchema.