我正在尝试使用 mongodb 创建一个家谱网站。创建新的家庭成员后,我只想引用该人的 parent (父亲),并让 mongoose 在人员模型中自动生成一个子字段。这是人员架构:
Person.add({
fullName: { type: String, initial:true, required: true,label: , index:true, },
parent: {type: Types.Relationship, ref:'Person'},
});
正如你所看到的,在创建一个新人时,我希望 mongoose 自动查找 Person 模型中父 ID 与我正在创建的人匹配的所有人,并在 Children 字段中生成一个 id 数组。
我做了一些研究,发现 Mongoose Virtuals 可以提供类似的东西,但我没有找到任何有关查询模型以添加到虚拟字段的文档。提前致谢!
最佳答案
您可以在 Person
架构模型中创建一个 post save
Hook ,然后查找
具有父 ID 的人员并创建/更新
该人的子数组。
使用 $addToSet
而不是 $push
,这样相同的子项就不会被推送多次。
试试这个:
PersonSchema.post('save', function(doc, next) {
this.findOneAndUpdate({_id : doc.parent},{$addToSet : { children : doc._id}})
next();
});
了解更多关于mongoose hooks的信息获取详细信息。
关于node.js - Mongoose 使用父字段生成子字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981567/