mongoose使用引用保存模型

mongoose使用引用保存模型,mongoose,mongoose-populate,Mongoose,Mongoose Populate,我有一个像这样的模型 var UserSchema = new Schema({ id: ObjectId, username: { type: String, trim: true, required: true, unique: true, lowercase: true }, location: [{ type: ObjectId, ref: 'Location', required: fals

我有一个像这样的模型

var UserSchema = new Schema({
    id:                 ObjectId,
    username:           { type: String, trim: true, required: true, unique: true, lowercase: true },
    location:           [{ type: ObjectId, ref: 'Location', required: false }],
    attachments:        [{ type: ObjectId, ref: 'Attachment', required: false }]
})
当用户注册时,我需要先创建location和attachments对象,然后再保存/创建用户以获取这些对象。我觉得我做这件事的方式可能是错误的,这就是为什么它令人困惑或者我遗漏了一些东西

我的问题是,在保存用户集合之前,如何保存这些集合,以便在用户集合中包含这些引用


与此问题类似,除了多个引用。

用于解决依赖关系。如果要在保存用户之前获取位置附件,请使用前钩子,否则请使用后钩子。

数据库中是否已经存在位置和附件文档,或者是否与新用户同时创建唯一的文档,或者你需要在创建之前检查它们是否已经存在?@cdbajorin在创建新用户时创建新的,我不需要检查附件或位置是否已经存在。新位置或附件对象的_id值立即可用,因为_id是在客户端而不是服务器上填充的。@JohnnyHK更正,如果我执行var newloc=new Locationdata;然后将其分配给用户user.location=newloc.\u id;这是有效的,我想知道我是否做得对,或者这样使用最佳实践。我觉得它正在把一个非关系型数据库变成一个关系型数据库,我希望尽可能采用最佳实践。谢谢你的评论!我不太明白你为什么这样做。我认为你试图创造太多的收藏。根据您对我的问题的回答,似乎位置/附件与用户的关系是1:1。这些有没有其他关联或用途?为什么要费心为它们创建集合呢?我遇到的问题是,我无法访问pre中的数据,我只能通过此访问与模型关联的任何内容