我在 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。但我想保存该计算并将信息存储在我的数据库中。

最佳答案

预先保存是正确的方法。将其添加到您的架构中。

ModelSchema
.pre('save', function(next){
  this.accuracy = this.totalRight/this.totalAttempts*100).toFixed(2)
  next();
});

accuracy 定义更改为:
accuracy: {
     type: Number
}

关于node.js - 基于 Mongoose 中其他两个字段的第三个字段的计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43955987/

10-11 09:29