猫鼬在架构中填充虚拟值的引用

时间:2019-06-03 11:18:14

标签: node.js mongodb mongoose

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

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

1 个答案:

答案 0 :(得分:2)

我认为您的虚拟字段定义应如下所示:

AttemptSchema.virtual('passed').get(function() {
    var attemptOutput = this.output.join();
    mongoose.model('Exercise').findById(this.exercise, function(err, excercise) {
        return excercise.output.join() === attemptOutput;
    });
});