我希望创建一个拥有独特访问“代码”的“游戏”。该代码在模式中是
必需
的,因此每次创建新游戏时都需要生成一个代码。
我认为schema.pre('init')
是生成该访问代码的好地方。GameSchema.pre('init', function(next) {
// Code generation logic happens here
this.code = myNewlyGeneratedCode
next()
}
很遗憾,这会返回一个错误消息:ValidationError: Game validation failed: code: Path 'code' is required.
为什么它不起作用?我是否必须在实例化新游戏之前创建一个code
?
.pre('save')
代替。 - JJJ.pre('save')
,因为我不想每次保存游戏文档更改时重新生成游戏代码。如我下面的评论所提到的,我认为.pre('validate')
是我要找的。 - Delta_HFpre-save
中使用this.isNew
。感觉Mongoose应该对这种情况有更好的支持;似乎这种情况非常普遍。 - Delta_HFpre-save
,因为 MongoDB 仍然抱怨需要code
路径。最终我使用pre-validate
中的this.isNew
完成了工作。 - Delta_HF