所有用户分数都存储在以下集合中:
var scoreSchema = new Schema({
userId: String,
totalPredictions: Number,
wins: Number,
pending: Number,
accuracy: Number
});
此处准确度定义为
accuracy = wins * 100 / (totalPredictions - pending)
我想做的是每次更新文档时更新准确性字段
根据mongoose,我们可以使用schema.pre('save'.. method。
然而,这不会在findOneAndUpdate上调用,这是一个问题。
我还能如何保持这个领域的有效性?
答案 0 :(得分:1)
您可以使用virtuals。
例如,
scoreSchema.virtual("accuracy").get(function(){
return this.wins * 100 / (this.totalPredictions - pending);
});
在此之前,您可能需要启用虚拟:
var scoreSchema = new Schema({
userId: String,
totalPredictions: Number,
wins: Number,
pending: Number,
accuracy: Number
},{
toObject: { virtuals: true },
toJSON: { virtuals: true }
});