2016-03-07 5 views
0

У меня есть 5 коллекций - A, B, C, D, E. У меня есть документ, который хранится в A и связан с документами в других 4 коллекциях. Я использую MeteorJS. Теперь я должен удалить данные в документе безопасно. Другими словами, документ должен быть удален в A, а также его ссылки в других. Только после того, как все они удалены, я должен показать пользователю сообщение об успешном завершении. Прямо сейчас, у меня есть только:Удаление документа из нескольких коллекций в MongoDB с MeteorJS

A.remove(documentID); 

Мне нужно использовать обратный вызов здесь, чтобы показать пользователю результат. Я совершенно не знаком с MongoDB и понимаю, что каскадное удаление строки здесь невозможно, как в SQL. Я не знаю, как написать код, который удалит документ и его ссылки (по ссылке documentID) из всех коллекций и покажет результат пользователю. Может кто-нибудь помочь, пожалуйста? Большое спасибо!

+0

Вы пробовали какой-либо код? –

ответ

0

Вы ищете крючки коллекции: https://github.com/matb33/meteor-collection-hooks

Коллекция крючки позволяют выполнять код перед/после вставки/обновления/удаления в коллекции. Используя ваш пример, вы можете создать коллекцию крюк, который выглядит примерно так:

A.after.remove(function(userId, doc) { 
    B.remove({AReference: doc._id}); 
    C.remove({AReference: doc._id}); 
    D.remove({AReference: doc._id}); 
    E.remove({AReference: doc._id}); 
}); 

AReference должен быть независимо от вашего родственного поля.

+0

Большое спасибо, но у меня есть вопрос после прохождения репозитория Github, как я могу проверить ошибки с таким кодом? Все удаления должны быть успешными. Если это так, пользователю возвращается код успеха. Если даже один не удается, код ошибки должен быть возвращен. Должен ли я использовать обратный вызов для каждого вызова для удаления? – user3033194

+0

Это зависит от того, как вы хотите справиться с этим. Я бы, наверное, бросил большую попытку/уловку по удалению, и этого было бы достаточно для меня. –

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