📅  最后修改于: 2023-12-03 15:32:56.607000             🧑  作者: Mango
在Mongoose中,可以通过定义枚举类型的字段来指定该字段允许的值。但是,在某些情况下,需要指定该字段不允许的值。本文将介绍如何使用Mongoose来实现该功能。
首先,我们需要先定义一个枚举类型的字段。例如,我们定义一个“颜色”字段,其允许的值为“红色”、“黄色”和“蓝色”。
const mongoose = require('mongoose');
const schema = new mongoose.Schema({
color: {
type: String,
enum: ['红色', '黄色', '蓝色']
}
});
const Model = mongoose.model('Model', schema);
在Mongoose中,可以通过定义验证器来验证字段值。在验证器中,我们可以检查字段值是否在一组值中。例如,我们可以定义一个验证器来检查“颜色”字段是否不在“白色”和“黑色”中。
const mongoose = require('mongoose');
const schema = new mongoose.Schema({
color: {
type: String,
enum: ['红色', '黄色', '蓝色'],
validate: {
validator: function(value) {
return !['白色', '黑色'].includes(value);
},
message: '颜色不能为白色或黑色'
}
}
});
const Model = mongoose.model('Model', schema);
在上面的示例中,我们定义了一个验证器函数,该函数使用JavaScript的Array.includes()
方法来检查字段值是否不在一组值中。如果字段值在组中,则验证失败,并返回指定的错误消息。
在使用验证器之前,我们需要首先进行测试,以确保它正常工作。例如,我们可以创建一个新文档,将“颜色”字段设置为“白色”,然后尝试保存该文档。
const doc = new Model({ color: '白色' });
doc.save(err => {
console.log(err.message); // 颜色不能为白色或黑色
});
在上面的示例中,我们尝试保存带有“白色”字段值的文档。由于该值不在允许的值列表中,因此验证失败,文档未保存,并返回指定的错误消息。
在Mongoose中,可以通过定义枚举类型的字段和验证器来指定字段不允许的值。这种方法可以防止潜在的错误,并提高应用程序的可靠性。