猫鼬:尝试使用$ pullAll删除引用的对象

时间:2018-08-28 19:55:22

标签: javascript node.js mongodb mongoose

在使用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”>我正在关注文档,因此无法发现任何问题/差距。

0 个答案:

没有答案