如何在猫鼬模式中定义对象数组的最小长度?

时间:2021-03-26 06:47:39

标签: 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: [  // 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 个答案:

答案 0 :(得分:1)

解决方案 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');

参考

SchemaType.prototype.validate()

Array size in Mongoose schema

相关问题