【发布时间】:2016-10-31 23:27:03
【问题描述】:
我刚学Mongoose,已经对Parent和Child文档建模如下..
var parent = new Schema({
children: [{ type: Schema.Types.ObjectId, ref: 'Child' }],
});
var Parent = db.model('Parent', parent);
var child = new Schema({
_owner: { type: Schema.Types.ObjectId, ref: 'Parent' },
});
var Child = db.model('Child', child);
当我删除 Parent 时,我还想删除 children 字段中引用的所有 Child 对象。 Stackoverflow 上的Another question 声明父级的pre 中间件函数可以这样写...
parent.pre('remove', function(next) {
Child.remove({_owner: this._id}).exec();
next();
});
这应该确保所有子对象都被删除。但是,在这种情况下,是否有任何理由在 Parent 模式中包含 children 数组?没有它我不能执行创建/读取/更新/删除操作吗?例如,如果我想要所有可以做的孩子?
Child.find({_owner: user._id}).exec(function(err, results) { ... };
我见过的所有关于 Mongoose 'hasMany' 关系的示例都具有一个 'children' 数组,但没有显示它是如何使用的。有人可以提供一个例子或给出一个目的吗?
【问题讨论】:
标签: javascript node.js mongodb mongoose