在Mongoose中,可以通过在模式定义中设置default
属性来为字段设置默认值。然而,有时候我们可能希望在调用save()
方法时防止创建这些默认值。以下是一些方法可以实现这个目标:
strict
选项:在模式定义中设置strict: 'throw'
,这将使得在保存文档时,如果存在未定义的字段,Mongoose会抛出一个错误。这样可以确保不会自动创建默认值。const schema = new mongoose.Schema({
name: { type: String, default: 'John' },
age: { type: Number, default: 25 }
}, { strict: 'throw' });
validateBeforeSave
选项:在模式定义中设置validateBeforeSave: false
,这将禁用在保存文档之前的验证过程,包括默认值的创建。const schema = new mongoose.Schema({
name: { type: String, default: 'John' },
age: { type: Number, default: 25 }
}, { validateBeforeSave: false });
pre('save')
钩子:在模式定义中添加一个pre('save')
钩子函数,在保存文档之前手动删除默认值字段。const schema = new mongoose.Schema({
name: { type: String, default: 'John' },
age: { type: Number, default: 25 }
});
schema.pre('save', function(next) {
if (this.isNew) {
this.name = undefined;
this.age = undefined;
}
next();
});
这些方法可以根据具体需求选择使用。请注意,这些方法都是针对Mongoose库的特定解决方案,与云计算品牌商无关。
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云