Mongoose 是一个优秀的 Node.js 的 ORM(对象关系映射)框架,它提供了一种非常方便的方式来管理 MongoDB 数据库。在 Mongoose 中,我们需要定义我们的 Schema(数据模型),而数据模型中定义的数据类型则决定了数据库中对应对应字段可以存储的数据的类型。本文将会深入介绍 Mongoose 中常见的数据类型。
基本数据类型
String 字符串
字符串类型是最常见的数据类型之一,它可以用来表示文本数据。在 Mongoose 中,我们可以使用 String
代表一个字符串类型:
const userSchema = mongoose.Schema({ name: String, email: String, password: String, });
Mongoose 中的 String
类型是一个有限制的字符串类型,并且默认为 maxLength:
为 256 的限制,如果超过这个长度则会抛出错误。如果需要设置长度,可以使用以下的设置方式:
// javascriptcn.com 代码示例 const userSchema = mongoose.Schema({ name: { type: String, required: true, maxLength: 30, }, email: String, password: String, });
Number 数字
数字类型在数据存储时使用较多,代表了数值类型的数据。在 Mongoose 中,我们可以使用 Number
代表一个数字类型:
const articleSchema = mongoose.Schema({ title: String, author: String, content: String, likes: Number, });
Mongoose 中的 Number
类型不仅可以存储整数类型,还可以存储小数类型。
Date 日期
Date
类型代表了时间和日期的数据类型,在 Mongoose 中,我们可以使用 Date
代表一个日期类型:
const articleSchema = mongoose.Schema({ title: String, author: String, content: String, createdTime: Date, });
Mongoose 中的 Date
类型会将我们存储的数据转化为 GMT 时间格式。
Boolean 布尔值
Boolean
类型代表了布尔值的数据类型,在 Mongoose 中,我们可以使用 Boolean
代表一个布尔类型:
const articleSchema = mongoose.Schema({ title: String, author: String, content: String, isPublic: Boolean, });
在 Mongoose 中,我们可以使用一个比较有用的方法来定义默认值,如果我们需要这个布尔类型默认值为 true,可以这样设置:
const articleSchema = mongoose.Schema({ title: String, author: String, content: String, isPublic: { type: Boolean, default: true, }, });
高级数据类型
Array 数组
Array
是我们数据中广泛使用的数据类型之一,用来表示多个值。在 Mongoose 中,我们可以使用 Array
代表一个数组类型:
const articleSchema = mongoose.Schema({ title: String, author: String, content: String, categories: Array, });
我们可以使用 default
属性来设置默认值,比如:
const articleSchema = mongoose.Schema({ title: String, author: String, content: String, categories: { type: Array, default: ['新闻', '科技'], }, });
Object 对象
对象(Object
)数据类型是我们数据中非常常见的一种数据类型,它用来包含多个值的属性。在 Mongoose 中,我们可以使用 Object
来表示一个对象类型:
const bookSchema = mongoose.Schema({ name: String, author: { name: String, age: Number, gender: String }, });
我们可以使用 default
属性来设置对象类型的默认值,比如:
// javascriptcn.com 代码示例 const bookSchema = mongoose.Schema({ name: String, author: { name: String, age: Number, gender: { type: String, default: 'unknown' } }, });
ObjectId 和 Mixed
ObjectId
和 Mixed
数据类型是 Mongoose 中另外两种非常重要的数据类型。ObjectId
是 MongoDB 中特殊的一种数据类型,在 Mongoose 中,我们可以使用它来表示一个文档的 id
。
// javascriptcn.com 代码示例 const articleSchema = mongoose.Schema({ title: String, author: String, content: String, comments: [{ id: mongoose.Schema.Types.ObjectId, author: String, content: String, }] });
Mixed
类型可以用来表示无法确定或者未知类型的数据。当我们无法确定数据类型时,可以使用 Mixed
类型。但是,不推荐过多地使用 Mixed
类型,因为这样设计出来的模式较为松散,不利于维护。
额外设置
在 Mongoose 中设置默认值是十分方便的,如果在 Schema 中设置的默认值是函数,函数的返回值就会作为默认值。可以采用以下的方式来实现:
// javascriptcn.com 代码示例 const blogSchema = mongoose.Schema({ title: String, author: String, content: String, createdAt: { type: Date, default: Date.now() }, });
createdAt
这个字段设置了默认值为当前时间。需要注意的是,如果这里直接写 Date.now()
,那么它仅会在创建 Schema 的时候被调用一次,而不是每次创建文档时都会重新计算。
此外,我们还可以设置特定的默认值,可以把默认值设置为 false,以此表示默认密码是不可用的,比如:
const userSchema = new Schema({ name: String, email: String, password: { type: String, default: false }, });
这里定义的 password
数据类型是一个字符串,但是默认是 false,也就是说这个字段是最初不可用的。
总结
Mongoose 中常见的数据类型包括 String、Number、Date 和 boolean,还有 Array 和 Object 以及 ObjectId 和 Mixed,每种数据类型都具有其独特的特性和应用场景。在使用 Mongoose 建立数据模型时,需要结合自己的业务场景选择适当的数据类型,从而提高数据存储的效率和性能。
通过本文的介绍,相信读者们已经初步掌握了 Mongoose 中常见的数据类型及默认值设置方式。希望能够帮助到大家。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65487a2b7d4982a6eb2bcf71