我有2个mongoose Collection (用户和财产).一个用户可以有多个属性,多个用户可以有相同的属性. 删除用户时,我想删除其引用的属性(仅删除其他用户未引用的属性).
这是两个系列
Model/User.js
const userSchema = new mongoose.Schema({
first_name: { type: String, default: null },
last_name: { type: String, default: null },
email: { type: String, unique: true },
password: { type: String },
token: { type: String },
properties: [{ type: Schema.Types.ObjectId, ref: 'property' }]
});
userSchema.post('findOneAndDelete', function(doc) {
Property.deleteMany({_id: { $in: doc.properties }});
});
module.exports = mongoose.model("user", userSchema);
Model/Property.js
const propertySchema = new mongoose.Schema({
name: {
type: String,
unique: true
},
type: {
type: String,
enum: ['house', 'apartment', 'room' ,'parking', 'pool']
},
numberOfBedrooms: { type: Number },
numberOfBathrooms: { type: Number },
maxNumberOfGuests: { type: Number }
});
module.exports = mongoose.model("property", propertySchema);
在我的用户控制器上,当我try 使用findOneAndDelete时,它会激活"findOneAndDelete"的POST,但不会删除引用的属性.你知道为什么吗? 您知道如何只删除其他地方未引用的属性吗?
非常感谢! 路易