更新时如何执行PRE保存挂钩功能
在我的文档中,我有一些名为身高、体重、BMI的属性。我使用预保存挂钩来计算和存储文档创建或保存时的BMI。但我想在身高或体重更新时更新 BMI。
//这是我使用的预保存钩子
studentSchema.pre('save', function (next) {
this.bmi = calcBMI(this.height, this.weight);
next();
});
//BMI计算函数
exports.calcBMI = (height, weight) => {
const heightInMeters = height / 100;
const bmi = (weight / heightInMeters ** 2).toFixed(2);
return bmi;
};
这个函数在我创建新学生时效果很好。
In my document I have some properties called height, weight, BMI. I used the pre save hook to calculate and store the BMI on document create or save. But I want to Update the BMI whenever the height or weight is updated.
//this is the pre save hook that I used
studentSchema.pre('save', function (next) {
this.bmi = calcBMI(this.height, this.weight);
next();
});
//BMI Calculating Function
exports.calcBMI = (height, weight) => {
const heightInMeters = height / 100;
const bmi = (weight / heightInMeters ** 2).toFixed(2);
return bmi;
};
This function works well when I create a new student.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须在架构中使用Mongoose Setters,例如:
官方Mongoose页面: >
you have to use mongoose setters in schema like:
official mongoose page: mongoose setters page
您可以在文档属性上使用
isModified()
辅助函数并检查它是否发生更改You can use
isModified()
helper function on a document property and check if it's change or not