Удаление каскадного стиля в Mongoose

Есть ли способ удалить всех детей родителя в Mongoose, аналогично использованию внешних ключей MySQL?

Например, в MySQL я бы назначил внешний ключ и настроил его на каскад при удалении. Таким образом, если бы я должен был удалить клиента, все приложения и связанные пользователи также были удалены.

С верхнего уровня:

  1. Удалить клиент
  2. Удалить лотереи
  3. Удалить сообщения

В лотереях и представлениях есть поле для client_id. В представлениях есть поле для sweepstakes_id и client_id.

Прямо сейчас, я использую следующий код, и я чувствую, что должен быть лучший способ.

Client.findById(req.params.client_id, function(err, client) { if (err) return next(new restify.InternalError(err)); else if (!client) return next(new restify.ResourceNotFoundError('The resource you requested could not be found.')); // find and remove all associated sweepstakes Sweepstakes.find({client_id: client._id}).remove(); // find and remove all submissions Submission.find({client_id: client._id}).remove(); client.remove(); res.send({id: req.params.client_id}); }); 

3 Solutions collect form web for “Удаление каскадного стиля в Mongoose”

Это один из основных вариантов использования промежуточного ПО Mongoose 'remove' .

 clientSchema.pre('remove', function(next) { // 'this' is the client being removed. Provide callbacks here if you want // to be notified of the calls' result. Sweepstakes.remove({client_id: this._id}).exec(); Submission.remove({client_id: this._id}).exec(); next(); }); 

Таким образом, при вызове client.remove() это промежуточное программное обеспечение автоматически вызывается для очистки зависимостей.

Если ваши ссылки хранятся иначе, скажем, у client есть массив submission_ids , то аналогичным образом, как принятый ответ, вы можете определить следующее в submissionSchema :

 submissionSchema.pre('remove', function(next) { Client.update( { submission_ids : this._id}, { $pull: { submission_ids: this._id } }, { multi: true }) //if reference exists in multiple documents .exec(); next(); }); 

который удалит идентификатор представления из ссылочных массивов клиентов по адресу submission.remove() .

Вот еще один способ, который я нашел

 submissionSchema.pre('remove', function(next) { this.model('Client').remove({ submission_ids: this._id }, next); next(); }); 
  • mongodb / mongoose findMany - найти все документы с идентификаторами, перечисленными в массиве
  • Сумма совпадения $ Moongoose не совпадает с идентификатором id
  • MongoDB / Mongoose запрос в определенную дату?
  • Model.find (). ToArray () утверждает, что не имеет метода .toArray ()
  • Mongoose Уникальный индекс не работает!
  • Заполнение вложенного массива в мангусте
  • толкание объекта в схему массива в Mongoose
  • $ искать несколько уровней без $ unwind?
  • Почему вы не можете изменять данные, возвращаемые Mongoose Query (например: findById)
  • Заseleniumие Mongoose vs вложенность объекта
  • Запрос Mongoose / mongoDB ... но я пришел из sql-фона
  • Interesting Posts

    Как я могу проверить, подключены ли streamи ввода / вывода Java-программы к терминалу?

    Лучший способ заставить Java-модуль вести себя так, как должен, с отрицательными числами?

    Как отключить панель действий навсегда

    Остановка прокрутки фиксированной позиции в определенный момент?

    Как изменить загрузочную анимацию Windows 7?

    Существуют ли какие-либо недостатки запуска Caviar Red (или любого другого NAS-ready) жесткого диска на вашем настольном ПК?

    Можно ли использовать новое место для массивов в переносном режиме?

    Как UISelectOne и UISelectMany компоненты предварительно выбирают значения по умолчанию в f: selectItems

    Почему «местный» считывает код возврата команды?

    Есть ли условный тернарный оператор в VB.NET?

    Excel извлекает подстроку из строки

    Поиск в Android с помощью fragmentов

    Java: чтение последних n строк файла HUGE

    Как я могу получить Express для вывода хорошо отформатированного HTML?

    Как искать слово или фразу в команде «человек» Linux и цикл через найденные решения?

    Давайте будем гением компьютера.