Mongoose 是一个 Node.js 的 MongoDB 驱动程序,它提供了一种简单的方式来定义数据模型和操作 MongoDB 数据库。在 Mongoose 中,Schema 是在定义数据模型时用来描述数据结构的对象。在本文中,我们将详细介绍 Mongoose 中的 Schema 规则,包括类型、验证、默认值等方面的内容。
Schema 类型
在 Mongoose 中,Schema 支持以下数据类型:
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- ObjectId
- Array
下面是一个示例 Schema 定义:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ----- ------- ---- ------- ------ - ----- ------- --------- ----- ------- ---- -- ---------- - ----- ----- -------- -------- -- -------- --------- ------- ------ ---
在上面的示例中,我们定义了一个用户模型,它包含了 name、age、email、createdAt、friends 和 avatar 属性。其中,name 和 age 的类型分别为 String 和 Number,email 的类型为 String,并且必须存在且唯一,createdAt 的类型为 Date,并且默认值为当前时间,friends 的类型为字符串数组,avatar 的类型为 Buffer。
Schema 验证
在 Mongoose 中,Schema 支持以下验证规则:
- required:字段必填。
- min/max:数字的最小/最大值。
- minlength/maxlength:字符串的最小/最大长度。
- enum:枚举值。
- match:正则表达式匹配。
- validate:自定义验证函数。
下面是一个示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ----- - ----- ------- --------- ----- ---------- -- ---------- -- -- ---- - ----- ------- ---- --- ---- -- -- ------- - ----- ------- ----- -------- --------- -- ------ - ----- ------- ------ ---------------------------------- -- ------ - ----- ------- --------- - ---------- ----------- - ------ ---------------------------- -- -------- ----- -- --------------- -- --- - ----- ----- -------- - - ---
在上面的示例中,我们定义了一个用户模型,它包含了 name、age、gender、email 和 phone 属性。其中,name 必填且长度在 6 到 20 之间,age 的值必须在 18 到 99 之间,gender 必须是 male 或 female,email 必须符合正则表达式 /^\w-.]+@([\w-]+.)+[\w-]{2,4}$/,phone 必须符合自定义验证函数中的正则表达式。
Schema 默认值
在 Mongoose 中,Schema 支持以下默认值:
- String/Number/Date:默认值为 null。
- Boolean:默认值为 false。
- ObjectId:默认值为 new ObjectId()。
- Array:默认值为 []。
下面是一个示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ----- ------- ---- ------- ------ ------- ---------- - ----- ----- -------- -------- -- -------- - ----- --------- -------- ------- -------- -- -------- - ----- -------- -------- ----- -- ------- ------ ---
在上面的示例中,我们定义了一个用户模型,它包含了 name、age、email、createdAt、friends、isAdmin 和 avatar 属性。其中,createdAt 的默认值为当前时间,friends 的默认值为 ['Tom', 'Jerry'],isAdmin 的默认值为 false。
总结
在本文中,我们介绍了 Mongoose 中的 Schema 规则,包括类型、验证和默认值。在实际开发中,我们可以根据业务需求来定义合适的 Schema,对数据进行有效的管理和操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/655ecbbfd2f5e1655d8f1fd3