在使用Mongoose的nodejs应用程序中,我有很多关系:应用程序具有许多AppClient。
型号:
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删除App中引用的AppClients文档。我尝试过:
appSchema.pre('remove', async function(next) {
const app = this
await App.update( { _id: app.id }, { $pullAll: { appClients: app.appClients } } ).exec()
next()
})
但这不起作用。不会引发任何错误,但不会删除“ app.appClients”>我正在关注文档,因此无法发现任何问题/差距。