首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何防止mongoose save()创建一些模式默认值?

在Mongoose中,可以通过在模式定义中设置default属性来为字段设置默认值。然而,有时候我们可能希望在调用save()方法时防止创建这些默认值。以下是一些方法可以实现这个目标:

  1. 使用strict选项:在模式定义中设置strict: 'throw',这将使得在保存文档时,如果存在未定义的字段,Mongoose会抛出一个错误。这样可以确保不会自动创建默认值。
代码语言:txt
复制
const schema = new mongoose.Schema({
  name: { type: String, default: 'John' },
  age: { type: Number, default: 25 }
}, { strict: 'throw' });
  1. 使用validateBeforeSave选项:在模式定义中设置validateBeforeSave: false,这将禁用在保存文档之前的验证过程,包括默认值的创建。
代码语言:txt
复制
const schema = new mongoose.Schema({
  name: { type: String, default: 'John' },
  age: { type: Number, default: 25 }
}, { validateBeforeSave: false });
  1. 使用pre('save')钩子:在模式定义中添加一个pre('save')钩子函数,在保存文档之前手动删除默认值字段。
代码语言:txt
复制
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库的特定解决方案,与云计算品牌商无关。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券