我想创建一个模式的虚拟“通过”值,因此我需要检查另一个模式以查看两个值是否匹配。

在线看了一下,您可以在查询期间填充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;
    });
});

09-25 19:00