0
這與this和this不同。但他們非常有幫助。同一型號中的貓鼬級聯刪除
基本上,我有一個主題架構。如果某個主題被刪除,我想刪除其他主題。考慮一個圖形,刪除節點意味着刪除邊緣。
var schema = new Schema({
title: { type: String, required: true, trim: true },
srcId: { type: Schema.Types.ObjectId, validate: [edgeValidator, 'Set both srcId and destId, or neither'] },
destId: Schema.Types.ObjectId,
});
我想第二個蒙戈刪除在schema.pre('remove', ...)
運行,但我沒有在這一點上的典範。所以調用.find()或.remove()不起作用。最好的方法是什麼?
schema.pre('remove', function(next) {
var query = '';
var self = this;
if (this.isEdge) {
query = 'MATCH()-[r:CONNECTION { mongoId: {_id} }]-() DELETE r;';
} else {
query = 'MATCH (n:Topic { mongoId: {_id} })-[r]-() DELETE n,r;';
}
// This is another database.
neo.query(query, this, function(err, data) {
if (err) return next(err);
if (self.isEdge) {
return next();
} else {
// Now we're back to mongoose and mongodb
// Find and remove edges from mongo
schema.find({ mongoId: { // <------ .find() is undefined
$or: [
{ srcId: self._id },
{ destId: self._id }
]
}}, function(err, edges) {
edges.remove(next);
});
}
});
});