mongooseembedded式文件保存

我有两个模型,其中一个是User ,另一个是Reservation 。 我想embedded一个用户对象到每个保留。 用户已经创build并存储在用户集合中。 当我尝试创build一个新的Reservation对象时,我的User对象通过预保存方法并最终失败,因为有唯一的用户名字段。 有没有办法绕过预存储方法时,将对象embedded到另一个集合或我的方法是完全错误的? 我的预订架构的代码。 谢谢!

 import User from './../users/users.model'; const Schema = mongoose.Schema; export default new Schema({ user: { type: User } }); 

编辑:当我明确定义架构绕过预存储方法(这是有道理的),但如果我想改变架构,我需要改变它在两个不同的地方。

你可以按照这个过程。

而不是引用完整的集合,你应该引用一个特定的用户 预订文档。当你将保存或创build新的Reservation信息时,你应该传递用户id作为ObjectId存储和引用该用户模型引用user模型使用ref关键字。 所以你可以容易地从预订模型填充用户

喜欢:

 user:{ type: Schema.Types.ObjectId, ref: 'User' } 

代替

 user: { type: User } 

或者,如果你想在预留模式中embedded用户架构 ,那么可以使用像

 user: { type: [User] }