我需要为#fff
,#fafafa
,red
等项目存储一些十六进制颜色。我应该为此目的使用什么样的最佳类型?
谢谢!
答案 0 :(得分:5)
只需使用String
并添加一些验证以确保输入的类型正确:
COLORS = ['red', 'blue', ...];
function colorValidator (v) {
if (v.indexOf('#') == 0) {
if (v.length == 7) { // #f0f0f0
return true;
} else if (v.length == 4) { // #fff
return true;
}
}
return COLORS.indexOf(v) > -1;
};
new Schema({
color: { type: String, validate: [colorValidator, 'not a valid color'] }
});
我快速写了colorValidator
以帮助您获得一个想法,但您可以轻松扩展它以获得更复杂的颜色验证。
答案 1 :(得分:0)
您可以将validator
与正则表达式测试结合使用:
const colorValidator = (v) => (/^#([0-9a-f]{3}){1,2}$/i).test(v)
const schema = new Schema({
color: {
type: String,
validator: [colorValidator, 'Invalid color'],
required: true,
},
});
它与#fff
#ffffff
#FFF
#FFFFFF
(3位和6位数字,不区分大小写)匹配。