枚举验证在单个字符串时起作用:
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
发布任何内容。这是怎么回事?为什么对于像单个字符串这样的字符串数组的验证不起作用?
答案 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