乐闻世界logo
搜索文章和话题

如何允许 mongoose 架构中的枚举字段为 null ?

4 个月前提问
3 个月前修改
浏览次数42

1个答案

1

在Mongoose中,如果您希望一个枚举字段能够接受null值作为一个合法的选项,您可以在定义枚举字段的时候包含null。这样,null就会被视为一个有效的枚举值。

下面是一个具体的例子来说明如何实现这一点:

假设我们有一个名为Product的Mongoose模型,其中有一个名为status的字段,这个字段应该只接受几个预定义的字符串值(比如"available", "out of stock", "discontinued"),但同时我们希望这个字段也能够存储null值,以表示该产品的状态未知或未被指定。

javascript
const 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

javascript
const newProduct = new Product({ name: 'Sample Product' }); newProduct.save() .then(product => console.log(product)) .catch(err => console.error(err));

这样,newProductstatus字段将会被设置为null,因为我们在架构中将null包含在了枚举值列表中,并且设置了defaultnull

这种方式允许您在保持字段值验证的同时,灵活地使用null来表示某些特殊的状态。

2024年6月29日 12:07 回复

你的答案