Mongoose Embedded Document Pre Save

时间:2016-05-01 17:52:29

标签: node.js mongodb mongoose

我有两个模型,其中一个是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
  }
});

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

1 个答案:

答案 0 :(得分:3)

您可以按照此过程操作。

您应该引用特定用户作为预订文档,而不是参考完整的集合。当您保存或创建新的{{1您应该将用户Reservation传递给id并将ObjectId引用到用户模型以引用id模型使用user关键字的信息。这样您就可以轻松地从预订模型填充用户

像:

ref

而不是

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

如果您想在预订架构中嵌入用户架构,那么可以使用

user: {
    type: User
  }