Mongoose 中文文档 schema 实例详解

Mongoose 中文文档 schema 实例详解

在 MongoDB 中,数据存储的格式是以文档形式存储的,每个文档包含一些字段和对应的值。而在使用 Mongoose 操作 MongoDB 数据库时,我们则需要定义每个文档的格式,也就是 schema。

Schema 是一个 Mongoose 中非常重要的概念,它用于定义数据集合中每个文档的属性、类型以及各种约束条件。在本文中,我们将详细介绍 Mongoose schema 的相关知识,并结合实例来进行讲解。

  1. 基本用法

定义一个 Mongoose schema 通常需要包含键(key)和值(value)两部分。其中,键表示文档属性名称,值是一个对象,用于描述相应属性的类型、默认值、验证规则等。

下面是一个简单的 schema 定义示例:

在这个示例代码中,定义了一个名为 User 的 schema,它包含了四个属性:

  • name:字符串类型。
  • age:数字类型。
  • email:字符串类型。
  • createTime:日期类型,如果没有指定则默认为当前时间。

当我们将这个 schema 应用到 MongoDB 数据库中时,就可以以这个格式存储数据集合中的文档。

  1. 约束条件

除了属性类型和默认值之外,Mongoose schema 还支持各种约束条件,用于限制属性的取值范围和格式等。下面我们将介绍几种常用的约束条件。

1)必填约束

有时我们需要确保某些属性不为空,可以使用 required 约束:

这样,如果添加的文档中没有指定 name 属性或者 name 属性为空字符串,则会抛出错误。

2)唯一值约束

如果一个属性需要保证唯一性,可以使用 unique 约束:

这样,如果添加的文档中的 name 属性已经存在,则会抛出错误。

3)枚举约束

如果一个属性的取值只能从指定的一组值中选取,可以使用 enum 约束:

这样,如果添加的文档中的 gender 属性值不是 'male' 或 'female',则会抛出错误。

4)自定义约束

除了上述内置的约束条件之外,还可以自定义约束条件。比如我们可以定义一个长度 >= 6 的密码:

这里使用了 validate 约束,它是一个对象,包含一个 validator 函数和一个 message 字符串。validator 函数用于实现自定义的验证逻辑,如果验证不通过则会抛出一个错误提示信息。

  1. 嵌套 schema

在 MongoDB 中,我们可以把文档中某个属性定义为另一个文档的嵌套属性。Mongoose schema 也支持嵌套 schema 的定义,使得我们可以更加灵活地组织文档结构。

下面是一个嵌套 schema 的示例代码:

在这个示例代码中,定义了一个名为 Post 的 schema,它包含了五个属性:

  • title:字符串类型。
  • content:字符串类型。
  • author:字符串类型。
  • createTime:日期类型,如果没有指定则默认为当前时间。
  • comments:评论列表,它的类型是一个嵌套 schema。
  1. 总结

本文介绍了 Mongoose schema 的基本用法、约束条件以及嵌套 schema 等相关知识,并结合实例代码进行了详细讲解。需要注意的是,实际应用中可能会有更加复杂的数据结构和验证规则,需要根据实际情况进行调整。

总之,Mongoose schema 是 Mongoose 中非常重要的一环,对于 MongoDB 数据库的操作具有重要的指导意义。希望读者通过本文的学习,能够掌握基本的 schema 定义方法,并能够根据实际需求进行相应的扩展和改造。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653dc60f7d4982a6eb7774d2


纠错
反馈