Mongoose: попробуйте удалить объекты, на которые есть ссылки, используя $ pullAll - PullRequest
0 голосов
/ 28 августа 2018

В приложении nodejs, использующем Mongoose, у меня есть несколько связей: в приложении много клиентов AppClients.

Модель:

const mongoose = require('mongoose')

const appSchema = new mongoose.Schema({
  name: String,
  appClients : [{ type: mongoose.Schema.Types.ObjectId, ref: 'AppClient' }]
})

appSchema.pre('remove', async function(next) {
  const app = this
  await AppClient.remove({_id: {$in: app.appClients }}).exec()
  next()
})

const App = mongoose.model('App', appSchema)

module.exports = App

const appClientSchema = new mongoose.Schema({
  field1: String,
  field2: String
})

const AppClient = mongoose.model('AppClient', appClientSchema)

Я хотел использовать $ pullAll для удаления документов AppClients, на которые есть ссылки в приложении. Я пробовал с:

appSchema.pre('remove', async function(next) {
  const app = this
  await App.update( { _id: app.id }, { $pullAll: { appClients: app.appClients } } ).exec()
  next()
})

но это не работает. Не выдает никакой ошибки, но «app.appClients» не удаляются> Я следил за документами и не могу найти проблему / пробел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...