В приложении 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» не удаляются> Я следил за документами и не могу найти проблему / пробел.