我在Mongoose模型上有2个字段:totalAttempts和totalRight。我计划根据它们来计算准确性。
totalAttempts: {
type: Number,
default: 1
},
totalRight: {
type: Number,
default: 1
}
这就是我所做的[它不起作用]
accuracy:{
type:Number,
required:function() {return (this.totalRight/this.totalAttempts*100).toFixed(2)}
}
此外,如果我没有将默认值设置为Accuracy,则会出现错误:
ERROR; While creating new question ..ValidationError: Path `accuracy` is require d.
events.js:163
什么是正确的方法来完成这一点?我已经有一个工作的解决方案,以获得totalAttempts和totalRight每次用户请求该模型。但我想保存该计算和存储信息在我的数据库。
3条答案
按热度按时间hivapdat1#
预保存是正确的方法。将其添加到您的模式中。
将
accuracy
定义更改为:jvlzgdj92#
在保存文档之前不需要进行计算,只需要添加一个虚拟字段,在需要时获取精度值
现在,当您查询此文档时,您将获得准确性,但不要忘记在文档查询中使用
.toJSON({ virtuals: true })
有关mongoose中的虚拟化的更多信息,请查看mongoose virtuals。当使用lean时,请使用此插件mongoose-lean-virtuals。
flseospp3#
请尝试以下操作: