在“mongoose”(prevalidate)中间件中更改字段是否正确?

每次将post保存到数据库时,我都需要生成slu g。 特别是Post.createpost.save 。 在PostShema.pre('validate')中间件中,我可能需要这个地方,如下所示:

 PostSchema.pre('validate', function (next) { this.slug = sluglify(this.title); return next(); }); 

所有的工作正常,除了它发生在validate middlweare应该只检查,但没有设置的事实。

所以我questuin是我应该居住在我的代码sluglify我的标题创build或更新后?

这在validation中没有发生,但validation之前 。 恕我直言,这就好像你在validation之前预先清理你的对象; 这没关系。

如果你觉得更舒适,你可以把它包括在pre-savepre-init而不是pre-validate