📜  使用 Node.js 的 MongoDB 中的默认值(1)

📅  最后修改于: 2023-12-03 14:49:43.644000             🧑  作者: Mango

使用 Node.js 的 MongoDB 中的默认值

在使用 Node.js 来操作 MongoDB 数据库时,我们经常需要设置一些默认值,特别是在插入文档时,如果一个字段的值没有设置,那么可能会引发错误。MongoDB 提供了一种默认值的机制,通过使用 default 属性,我们可以为某个字段指定一个默认值。

定义默认值

在 MongoDB 中,定义默认值的方式如下:

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  age: {
    type: Number,
    default: 0
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
});

在上述代码中,我们为 agecreatedAt 字段设置了默认值。如果在插入一个新的文档时,没有为这两个字段提供值,那么 MongoDB 会自动为它们设置默认值。

优先级

如果我们同时为一个字段指定了默认值和初始值,那么默认值会被忽略。例如:

const user = new User({
  name: "Tom",
  email: "tom@example.com",
  age: 30 // 初始值为 30
});

在上述代码中,我们为 age 字段提供了一个初始值,那么在插入文档时,初始值会覆盖默认值。

注意事项

在使用默认值时,需要注意以下几点:

  • 默认值只在插入文档时生效,更新文档时不会生效。
  • 如果在 required 属性和默认值同时存在的情况下,没有为该字段提供值,那么会引发验证错误。
  • 默认值可以是一个函数,但是该函数不能有参数。在上述示例中,我们为 createdAt 字段设置了默认值为 Date.now,它是一个函数。
结论

使用默认值可以提高开发效率,减少代码量,并且可以避免在插入文档时出现错误。在使用时,需要注意上述的注意事项。