对字符串数组进行Mongoose Schema枚举验证

时间:2016-12-01 03:07:22

标签: node.js validation mongoose

枚举验证在单个字符串时起作用:

var songSchema = new Schema({
    vocalRange: {
        type: String,
        enum: ["Soprano", "Mezzo-soprano", "Contralto", "Alto", "Tenor", "Baritone", "Bass"],
    }
})

尝试发布任何内容,但枚举中的内容会通过mongoose返回验证错误。

但是,以下内容:

var songSchema = new Schema({
    vocalRange: {
        type: [String],  // this is what changed
        enum: ["Soprano", "Mezzo-soprano", "Contralto", "Alto", "Tenor", "Baritone", "Bass"],
    }
})

允许我在没有任何验证的情况下为vocalRange发布任何内容。这是怎么回事?为什么对于像单个字符串这样的字符串数组的验证不起作用?

2 个答案:

答案 0 :(得分:1)

回答我的评论:

vocalRange: [{ type: String }]

应该有用。

答案 1 :(得分:0)

mongoose版本5.0.6起,OP问题现在可以解决!

vocalRange: {
    type: [String],  // this now works!
    enum: ["Soprano", "Mezzo-soprano", "Contralto", "Alto", "Tenor", "Baritone", "Bass"],
}

参考

  

https://github.com/Automattic/mongoose/issues/6204#issuecomment-374690551