Node.js 在mongoose中更改pre(';validate';)中间件中的字段是否正确?
我需要在每次将帖子保存到数据库时生成slug。在Node.js 在mongoose中更改pre(';validate';)中间件中的字段是否正确?,node.js,express,mongoose,middleware,slug,Node.js,Express,Mongoose,Middleware,Slug,我需要在每次将帖子保存到数据库时生成slug。在Post.create和Post.save上指定。在PostShema.pre('validate')中间件中,我可能需要这样一个地方,如下所示: PostSchema.pre('validate', function (next) { this.slug = sluglify(this.title); return next(); }); 除了在validatemiddlweare中发生之外,所有操作都可以正常工作,只应检查而不应设
Post.create
和Post.save
上指定。在PostShema.pre('validate')
中间件中,我可能需要这样一个地方,如下所示:
PostSchema.pre('validate', function (next) {
this.slug = sluglify(this.title);
return next();
});
除了在validate
middlweare中发生之外,所有操作都可以正常工作,只应检查而不应设置
因此,我的问题是,在创建或更新帖子时,我应该将我的代码存放在哪里?这不是在验证中发生的,而是在验证之前发生的。依我看,这就像是在验证对象之前,您正在预筛选/清理对象;没关系
如果您觉得更容易理解,可以将其包含在
预保存
或预初始化
中,而不是预验证
中,问题是我不准备/清理对象,而是设置新字段。那么您认为在预(“验证”)中使用格式正确吗?