Mongoose 是一个 Node.js 的 MongoDB 驱动程序,它提供了一种简单而优雅的方式来建立、验证和操作 MongoDB 数据库中的文档。在 Mongoose 中,SchemaType 是一个非常重要的概念,它用于定义 MongoDB 文档中的字段类型和验证规则。本文将详细介绍 Mongoose 内置的 SchemaType 类型,包括 String、Number、Date、Buffer、Boolean、Mixed、ObjectId 和 Array。
String 类型
String 类型用于表示字符串类型的字段。以下是 String 类型的一些常用选项:
minlength
:最小长度。maxlength
:最大长度。enum
:枚举值。match
:正则表达式模式。
示例代码:
// javascriptcn.com 代码示例 const userSchema = new mongoose.Schema({ username: { type: String, required: true, minlength: 3, maxlength: 20, match: /^[a-z0-9_-]{3,20}$/ } });
Number 类型
Number 类型用于表示数字类型的字段。以下是 Number 类型的一些常用选项:
min
:最小值。max
:最大值。
示例代码:
const productSchema = new mongoose.Schema({ price: { type: Number, required: true, min: 0, max: 100000 } });
Date 类型
Date 类型用于表示日期类型的字段。以下是 Date 类型的一些常用选项:
default
:默认值。
示例代码:
const postSchema = new mongoose.Schema({ title: String, content: String, createdAt: { type: Date, default: Date.now } });
Buffer 类型
Buffer 类型用于表示二进制数据类型的字段。以下是 Buffer 类型的一些常用选项:
default
:默认值。
示例代码:
const fileSchema = new mongoose.Schema({ filename: String, contentType: String, data: { type: Buffer, required: true } });
Boolean 类型
Boolean 类型用于表示布尔类型的字段。以下是 Boolean 类型的一些常用选项:
default
:默认值。
示例代码:
const userSchema = new mongoose.Schema({ username: String, isAdmin: { type: Boolean, default: false } });
Mixed 类型
Mixed 类型用于表示任意类型的字段。以下是 Mixed 类型的一些常用选项:
default
:默认值。
示例代码:
const postSchema = new mongoose.Schema({ title: String, content: String, metadata: { type: mongoose.Schema.Types.Mixed, default: {} } });
ObjectId 类型
ObjectId 类型用于表示 MongoDB 中的 _id 字段。以下是 ObjectId 类型的一些常用选项:
ref
:关联模型。
示例代码:
const commentSchema = new mongoose.Schema({ content: String, author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } });
Array 类型
Array 类型用于表示数组类型的字段。以下是 Array 类型的一些常用选项:
type
:数组元素的类型。default
:默认值。
示例代码:
const postSchema = new mongoose.Schema({ title: String, tags: { type: [String], default: [] } });
总结
本文详细介绍了 Mongoose 内置的 SchemaType 类型,包括 String、Number、Date、Buffer、Boolean、Mixed、ObjectId 和 Array。通过了解这些类型的选项和示例代码,我们可以更好地理解和使用 Mongoose。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65518ee7d2f5e1655db4caa0