我想创建一个模式的虚拟“通过”值,因此我需要检查另一个模式以查看两个值是否匹配。
在线看了一下,您可以在查询期间填充ref,但没有看到直接在模式中进行此操作的任何示例
var ExerciseSchema = new Schema({
title: { type: String, required: true },
output: [{ type: String, required: true }]
});
export var Exercise = mongoose.model('Exercise', ExerciseSchema);
我想将ExerciseSchema的输出与AttemptSchema的输出进行比较,并使用虚拟的“通过”变量返回true或false
var AttemptSchema = new Schema({
exercise: { type: ObjectId, ref: 'Exercise', required: true },
output: [{ type: String }],
});
export var Attempt = mongoose.model('Attempt', AttemptSchema);
AttemptSchema.virtual('passed').get(function() {
// compare outputs to see if passed
});
最佳答案
我认为您的虚拟字段定义应如下所示:
AttemptSchema.virtual('passed').get(function() {
var attemptOutput = this.output.join();
mongoose.model('Exercise').findById(this.exercise, function(err, excercise) {
return excercise.output.join() === attemptOutput;
});
});