我有两个模型,其中一个是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,我需要在两个不同的地方更改它。
答案 0 :(得分:3)
您可以按照此过程操作。
您应该引用特定用户作为预订文档,而不是参考完整的集合。当您保存或创建新的{{1您应该将用户Reservation
传递给id
并将ObjectId
引用到用户模型以引用id
模型使用user
关键字的信息。这样您就可以轻松地从预订模型填充用户。
像:
ref
而不是
user:{
type: Schema.Types.ObjectId,
ref: 'User'
}
或如果您想在预订架构中嵌入用户架构,那么可以使用
user: {
type: User
}