前言
在使用 Mongoose 进行数据存取时,Schema 是一个必备的概念。Schema 定义了数据的格式和类型,对于数据的读取和存储有着至关重要的作用。在实际开发中,经常需要对数据进行初始化或者默认值的设置,这时候,Mongoose 的 Schema 默认值设置就发挥了很大的作用。
本文将详细介绍 Mongoose 中的 Schema 默认值设置,包括默认值的设置方式、应用场景以及示例代码,帮助读者了解如何合理和高效地使用 Mongoose。
Schema 默认值设置的方式
Mongoose 的 Schema 默认值设置有多种方式,在这里我们分别介绍常用的两种方式:
使用对象字面量设置默认值
这种方式是通过在 Schema 中使用对象字面量来进行默认值的设置。具体的代码如下所示:
const userSchema = new mongoose.Schema({ name: { type: String, default: 'unknown' }, age: { type: Number, default: 0 } });
在上述的代码中,我们为字段 name
和 age
分别设置了默认的值 'unknown' 和 0。如果用户没有输入这两个字段的值,那么默认值就会被保存到数据库中。
使用函数设置默认值
这种方式是通过定义一个函数来进行默认值的设置。函数的返回值即为默认值。具体的代码如下所示:
const userSchema = new mongoose.Schema({ name: { type: String, default: function() { return 'unknown'; } }, age: { type: Number, default: function() { return 0; } } });
在上述的代码中,我们同样为字段 name
和 age
分别设置了默认值 'unknown' 和 0。不同的是,我们使用了函数来进行默认值的设置。
Schema 默认值设置的应用场景
Schema 默认值设置可以应用于很多场景,例如:
对于静态类型的默认初始化
在 Mongoose 中,Schema 可以非常方便地用来初始化数据,对于一些静态类型的数据初始化,使用默认值设置便显得十分方便。比如用户注册时,可以设置默认的用户昵称和性别,这样就可以免去用户在注册时输入的麻烦。
对于动态类型的默认初始化
对于动态类型的数据初始化,Schema 也同样适用。比如针对时间戳类型的字段,我们可以通过设置默认值为 Date.now
来自动获取当前时间戳。这样一来,不必手动为每条记录设置时间戳,而是在新增数据时,自动为其添加时间戳的记录。
对于默认值的类型考虑
在设置默认值时,我们需要考虑默认值的类型是否与这个字段的类型一致。例如,如果某个字段是数字类型,那么默认值也应该是数字类型,而不能是字符串类型。因为如果默认值的类型不一致,会导致程序在运行时出现类型错误,比如使用字符串类型的默认值去进行数值计算,就可能引起错误。
Schema 默认值设置的示例代码
下面我们来看一个完整的示例代码,具体示例代码用到了前面提到的两种默认值设置方式:
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const personSchema = new Schema({ name: { type: String, default: 'unknown' }, age: { type: Number, default: 0 }, gender: { type: String, default: function() { if (this.age > 18) { return 'male'; } else { return 'female'; } } }, createTime: { type: Date, default: Date.now } }); const Person = mongoose.model('Person', personSchema); const person = new Person({ name: 'Mia', age: 20 }); person.save(function(err) { if (err) { console.log(err); } else { console.log('save person success'); } });
上述代码中,我们定义了一个叫做 Person
的 Schema,为其中的 name
、age
、gender
和 createTime
分别设置了默认值。其中 gender
的默认值是通过函数计算而来,而 createTime
的默认值是通过调用 Date.now
来获取。
在最后一段代码中,我们对 Person
模型进行了新增操作,并且只给了 name
和 age
字段的值,因为其他字段已经有默认值了。执行完插入操作后,我们可以在数据库中看到插入的数据记录。
总结
通过使用 Mongoose 中的 Schema 默认值设置,可以有效提升开发效率,减少代码量。在使用时,需要考虑字段的类型以及数据的默认值。本文通过介绍了两种设置默认值的方式,以及应用场景和示例代码,希望读者可以掌握 Mongoose 中 Schema 默认值设置的使用方法。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6591f2c8eb4cecbf2d6e483c