繁体   English   中英

在Mongoose中使用子文档数组的正确方法

[英]Correct way to use array of sub documents in 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的另一个问题指出,可以像这样编写父级的中间件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'数组,但是没有显示如何使用它。 有人可以提供示例或给出示例吗?

好吧,您在->中定义了两个不同的集合,Child和Parent

var Parent = db.model('Parent', parent);

var Child = db.model('Child', child);

因此,您可以通过添加/删除/更新来随意使用Child模型。 通过将其保存为“参考”,您可以:

Parent.find({_id:'idofparent'})
.populate('children')
.exec((err, result) => { .... } )

然后,您的父母中将会有他们的孩子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM