Node.js 如何定义mongoose模式中对象数组的最小长度?

Node.js 如何定义mongoose模式中对象数组的最小长度?,node.js,mongoose,mongoose-schema,Node.js,Mongoose,Mongoose Schema,我有自己的问题model.js const mongoose = require('mongoose'); const validator = require('validator'); const questionSchema = new mongoose.Schema({ question: { type: String, required: [true, 'Question Required'], trim: true }, options

我有自己的问题model.js

const mongoose = require('mongoose');
const validator = require('validator');

const questionSchema = new mongoose.Schema({
  question: {
      type: String,
      required: [true, 'Question Required'],
      trim: true
  },
  options: [  // this array should atleast have two objects meaning two options
    {
        optionNo: Number,
        optionValue:{
            type: String,
            required: [true,'Option required'],
            trim: true
        }
    },
  ]
});

const Question = mongoose.model('Question', questionSchema);
module.exports = Question;
我希望每个问题至少有两个选项,如何在上面的“选项”字段中实现这一点。

解决方案1

const questionSchema = new mongoose.Schema({
  question: {
      type: String,
      required: [true, 'Question Required'],
      trim: true
  },
  options: {
    type: [{
        optionNo: Number,
        optionValue:{
            type: String,
            required: [true,'Option required'],
            trim: true
        }
    }],
    validate: [(val) -> val.length > 1, 'Must have minimum two options']
  }
});
解决方案2

questionSchema.path('options')
    .validate((val) -> val.length > 1, 'Must have minimum two options');
参考文献