Mongoose Embedded Document Pre Save

Ard*_*ner 5 mongoose mongodb node.js

我有两个模型,其中一个是User,另一个是Reservation.我想在每个预订中嵌入一个User对象.用户已创建并存储在Users集合中.当我尝试创建一个新的Reservation对象时,我的User对象经过pre save方法并最终失败,因为有唯一的username字段.有没有办法在将对象嵌入到另一个集合时绕过该预存方法,或者我的方法是完全错误的?我的预订架构代码.谢谢!

import User from './../users/users.model';
const Schema = mongoose.Schema;

export default new Schema({
  user: {
    type: User
  }
});
Run Code Online (Sandbox Code Playgroud)

编辑:当我明确定义Schema时它会绕过pre save方法(这很有意义),但如果我想更改Schema,我需要在两个不同的地方更改它.

Sha*_*Roy 3

您可以遵循此流程。

您应该引用特定用户的预订文档,而不是引用完整的集合。当您保存或创建新信息时,您应该将用户传递给存储为并将其引用到用户模型以引用模型使用关键字。这样您就可以从预订模型轻松填充用户ReservationidObjectIdiduserref

喜欢:

user:{
    type: Schema.Types.ObjectId,
    ref: 'User'
  }
Run Code Online (Sandbox Code Playgroud)

代替

user: {
    type: User
  }
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在 预订模式中嵌入用户模式,则可以使用类似

user: {
        type: [User]
      }
Run Code Online (Sandbox Code Playgroud)