使用mongoose验证整数值

时间:2016-06-08 19:30:40

标签: node.js mongodb mongoose

我正在使用mongoose,我需要定义如下的架构:

const QuestionSchema = new Schema({
    text: {
        type: String,
        required: true
    },
    number: {
        type: Number,
        required: true,
        unique: true
    }
});

我需要验证number字段是否为整数值。我见过几个插件,例如:mongoose-integer

const validateInteger = require('mongoose-integer');
const QuestionSchema = new Schema({
    text: {
        type: String,
        required: true
    },
    number: {
        type: Number,
        required: true,
        unique: true,
        integer: true
    }
});
QuestionSchema.plugin(validateInteger);

但我不想使用任何第三方库。还有其他方法吗?提前谢谢。

2 个答案:

答案 0 :(得分:39)

您可以为number添加custom validator

number: {
  type     : Number,
  required : true,
  unique   : true,
  validate : {
    validator : Number.isInteger,
    message   : '{VALUE} is not an integer value'
  }
}

答案 1 :(得分:0)

尝试使用 getter 和 setter:

number: {
    type: Number,
    required: true,
    unique: true,
    integer: true,
    get: v => Math.round(v),
    set: v => Math.round(v),
}