在Mongoose中,如果您希望一个枚举字段能够接受null
值作为一个合法的选项,您可以在定义枚举字段的时候包含null
。这样,null
就会被视为一个有效的枚举值。
下面是一个具体的例子来说明如何实现这一点:
假设我们有一个名为Product
的Mongoose模型,其中有一个名为status
的字段,这个字段应该只接受几个预定义的字符串值(比如"available"
, "out of stock"
, "discontinued"
),但同时我们希望这个字段也能够存储null
值,以表示该产品的状态未知或未被指定。
javascriptconst mongoose = require('mongoose'); const { Schema } = mongoose; const productSchema = new Schema({ name: { type: String, required: true }, status: { type: String, enum: [null, 'available', 'out of stock', 'discontinued'], default: null } }); const Product = mongoose.model('Product', productSchema);
在这个例子中,status
字段被定义为字符串类型,并且指定了一个enum
,列出了所有接受的值,包括null
。这意味着status
可以安全地存储null
值或任何枚举中的字符串值。
当我们创建一个新的Product
实例而没有指定status
时,status
字段默认会被设置为null
。
javascriptconst newProduct = new Product({ name: 'Sample Product' }); newProduct.save() .then(product => console.log(product)) .catch(err => console.error(err));
这样,newProduct
的status
字段将会被设置为null
,因为我们在架构中将null
包含在了枚举值列表中,并且设置了default
为null
。
这种方式允许您在保持字段值验证的同时,灵活地使用null
来表示某些特殊的状态。
2024年6月29日 12:07 回复