2015-07-07 3 views
0

Моей модель пользователя включает в себя:

{_id: "GenericMongoId", 
friends: [{type: Schema.ObjectId, ref:'User'}] 
} 

Я создаю функцию таким образом, что после удаления пользователя, все ссылки на этот пользователя во всех пользователях друзья массивы также удаляются.

User.findById(req.params.id, function (err, user) { 
    user.remove(function(err) { 
     User.update(({friends: req.params.id}),{$pull: {friends:req.params.id}}, function(err, data){ 
     console.log(err, data)... 

Когда я запускаю функцию и передаю идентификатор, по какой-то причине, похоже, удаляется только одна ссылка друга. Я предполагаю, что у меня что-то не хватает, но мой поисковик не находит его.

+0

Почему эта дополнительная скобка здесь User.update (( –

+0

Там в дополнительный код за многоточием – mjabraham

+0

Вы, конечно, не нужны эти дополнительные круглые скобки ({друзей: req.params.id}?) –

ответ

1

Duh, просто добавьте опцию мульти

User.update({friends: req.params.id}, 
{$pull: {friends:req.params.id}},{multi:true}... 
+0

О, сладкий, и мы находимся в обетованной стране удаления – mjabraham

0

Согласно документации Mongoose, поиск findById для одного документа по его идентификатор.

Находит один документ по идентификатору.

http://mongoosejs.com/docs/api.html#model_Model.findById

Вы можете достичь желаемого результата с помощью Model.update.

Смежные вопросы