Mongoose 是一个优秀的 Node.js 数据库 ORM 工具,它允许我们在 Node.js 中使用 MongoDB 数据库,并在应用程序中定义数据库模式和操作集合。在 Mongoose 模型中,数据模型的定义是通过定义 Schema 实现的。而 Schema 可以包含复杂数据类型,包括数组、嵌套对象等,本文将详细介绍 Mongoose 中如何实现 Schema 中的复杂数据类型。
定义 Schema
在 Mongoose 中,我们可以使用 Schema 来定义 MongoDB 中的集合,定义如下一个 Schema:
----- -------- - -------------------- ----- ------ - ---------------- ----- ------------ - --- -------- ----- ------- ---- ------- ------ - ----- ------- ------- ---- -- -------- - ------- ------- ----- ------- ------ - ----- ------- ----- ------ ----- ----- -- ---- ------ -- -------- -------- ---
这是一个简单的 personSchema,它包含了一个名字(name)、一个年龄(age)、一个电子邮件地址(email)、一个地址(address),一个由字符串组成的数组(hobbies)。在这个 Schema 中,我们定义了一个嵌套的对象 address,它又包含了 street、city、state、zip 四个属性,其中 state 的值必须在 ['CA', 'TX', 'NY'] 中选择。这样我们就定义了一个复杂的 Schema。
调用 Schema
当我们定义好 Schema 后,我们就可以在 Model 中调用 Schema。调用 Schema 会根据 Schema 自动生成一个名为 “people” 的集合,如下:
----- -------- - -------------------- ----- ------------ - ----------------------- ----- ------ - ------------------------ --------------
在上面的代码中,我们将 Schema 引入到文件中,并在 Model 中调用 Schema,根据 personSchema 自动生成了集合,使用 model 函数定义 collections 名称为 “people”。
示例
下面是一个更复杂的 Schema 示例,其中包含数组和嵌套对象:
----- -------- - -------------------- ----- ------ - ---------------- ----- ---------- - --- -------- ----- ------- ---- ------- ------ - ----- ------- ------- ---- -- -------- - ------- ------- ----- ------- ------ - ----- ------- ----- ------ ----- ----- -- ---- ------ -- -------- - - ------ ------- ------------ ------- -------------- - ----- ------- ---- -- ---- -- - - - --- ----- ---- - ----------------------- ------------ -------------- - -----
在这个 Schema 中,我们定义了一个 hobbied 数组,其中包含了一个嵌套对象,该对象包含了 hobby、description 和 interestLevel 三个属性,interestLevel 的值必须在 0-10 之间。这个示例显示了如何在 Mongoose 中使用嵌套对象和数组。
总结
在 Mongoose 中,我们可以使用 Schema 定义 MongoDB 中的集合。而 Schema 可以包含复杂的数据类型,包括数组、嵌入对象等。本文介绍了如何在 Mongoose 中定义和调用包含嵌套对象和数组的 Schema。这些示例代码可以帮助你更好地理解 Mongoose 中的 Schema,希望能对你的开发工作有所帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/649a58c248841e989473b8b7