在使用 Mongoose 构建 MongoDB 数据库时,我们需要使用 mongoose.Schema() 创建 schema(数据表结构),其中需要指定每个字段的类型。Mongoose 提供了多种类型供我们选择,本文将对这些类型进行详细讲解,并附带示例代码。
String 类型
String 类型用于存储文本数据。在 Mongoose 中,我们可以指定其最大长度、默认值和正则表达式等属性。下面是一个示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- --------- - ----- ------- --------- ----- ---------- --- ---------- -- -------- -------- ------ ----------------- - --
在上面的例子中,我们定义了一个用户名(username)字段,其类型为 String。我们还指定了该字段的必填属性为 true,且最大长度为 20,最小长度为 6。默认值为 'guest',同时该字段的值必须与正则表达式 /^[a-zA-Z0-9_]+$/ 相匹配。
Number 类型
Number 类型用于存储数字数据。Mongoose 中提供了 integer,long 和 double 类型。下面是一个示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ------ - ----- ------- -------- ----- --------- ----- ---- -- ---- ---- -------- -- - --
在上面的例子中,我们定义了一个价格(price)字段,其类型为 Number。我们还指定了该字段的必填属性为 true,且属性值必须为整数,同时取值范围为 0 到 100 之间。默认值为 10。
Date 类型
Date 类型用于存储日期数据。在 Mongoose 中,我们可以指定其存储格式、默认值和过期时间等属性。下面是一个示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ------ - ----- ------- --------- ---- -- -------- - ----- ----- --------- ----- -------- ----------- -------- -- - -- - -- - --
在上面的例子中,我们定义了一个待办事项(title)字段和截止日期(dueDate)字段。截止日期必填且默认值为当前时间,过期时间为 24 小时后。
Boolean 类型
Boolean 类型用于存储布尔类型数据。下面是一个示例:
-- -------------------- ---- ------- ----- ------------- - --- ----------------- ----- - ----- ------- --------- ---- -- ------- - ----- -------- -------- ----- - --
在上面的例子中,我们定义了一个产品名称(name)字段和是否打折(onSale)字段。是否打折默认为 false。
ObjectId 类型
ObjectId 类型用于存储 MongoDB 中的文档 id。下面是一个示例:
-- -------------------- ---- ------- ----- ----------- - --- ----------------- ----- - ----- ------------------------------- ---- ------ -- --------- -- ----- ------------------------------- ---- --------- -- --
在上面的例子中,我们定义了一个用户(user)字段和一个产品列表(products)字段。这两个字段的类型都是 ObjectId,且需引用到其他文档中。
Array 类型
Array 类型用于存储数组数据。下面是一个示例:
-- -------------------- ---- ------- ----- ------------- - --- ----------------- ----- ------- ---------- -- ----- ------- ---- ------- ------- - ----- ------- ----- -------- --------- -------- - -- --
在上面的例子中,我们定义了一个公司名称(name)字段和员工列表(employees)字段。员工信息以对象方式存储在数组中。
Buffer 类型
Buffer 类型用于存储二进制数据。下面是一个示例:
const fileSchema = new mongoose.Schema({ name: String, data: Buffer })
在上面的例子中,我们定义了一个文件名称(name)字段和文件数据(data)字段。文件数据以 Buffer 类型存储。
Map 类型
Map 类型用于存储键值对类型数据。下面是一个示例:
const recordSchema = new mongoose.Schema({ name: String, grades: { type: Map, of: Number } })
在上面的例子中,我们定义了一个学生姓名(name)字段和学生成绩(grades)字段。学生成绩以键值对的形式存储在 Map 类型中。
除了上述 Mongoose 中提供的数据类型,我们还可以自定义类型,用于存储复合结构的数据等。
总结
在使用 Mongoose 进行 Node.js 后端开发时,使用 schema 是必不可少的。而 schema 的类型选择的合理性,有可能影响到数据库的设计和性能,所以了解每种类型的用途和属性是非常重要的,本文详细讲解了每一种类型的使用方法,供读者参考。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6486f61348841e989459d464