首页 > 解决方案 > 如何在 Express 中验证模式?

问题描述

我有以下模型。我希望caraoCidadao遵循 8 个数字字符串的模式(例如:12345678),并且estado只能采用两个可能的值(infetado 和 suspeito)。我怎样才能进行验证?

var userSchema = new Schema({
  cartaoCidadao: {
    type: String,
    required: true,
    index: {
      unique: true,
    },
  },
  password: { type: String ,required:true},
  role: { type: String },
  estado:{type:String}
});

标签: javascriptnode.jsexpressmongoosemodel

解决方案


mongoose中有一些内置的验证器。

所以对于estado只能有两个可能的值('infetado' 和 'suspeito'),你可以使用enum

estado:{
  type:String;
  /* enum validator */
  enum: ['infetado', 'suspeito']
}

对于cartaoCidadao,一个正好有 8 个数字的字符串,你可以使用match

cartaoCidadao: {
  type: String,
  required: true,
  index: {
    unique: true,
  },
  /* match (RegExp) validator */
  match: /[0-9]{8}/
}

推荐阅读