Mongoose Schema 基础详解及实例

Mongoose 是一个 Node.js 的 ORM 库,用于在 Node.js 中操作 MongoDB 数据库。Mongoose 提供了一种简单而强大的方式来定义数据模型和数据验证规则,方便开发人员进行数据的操作和管理。其中,Schema 是 Mongoose 中的重要概念,本文将详细介绍 Mongoose Schema 的基础知识及其实例应用。

什么是 Mongoose Schema

Mongoose Schema 是指 MongoDB 数据库中的数据结构定义,它用于定义集合中的文档的属性和类型。Schema 可以包含以下数据类型:

  • String:字符串类型
  • Number:数字类型
  • Date:日期类型
  • Buffer:二进制数据类型
  • Boolean:布尔类型
  • Mixed:混合类型
  • ObjectId:对象 ID 类型
  • Array:数组类型

除了以上的数据类型,Mongoose 还支持自定义数据类型。

Mongoose Schema 的基本使用

在使用 Mongoose Schema 时,首先需要在代码中引入 Mongoose 模块,然后定义一个 Schema 对象。下面是一个简单的示例:

在上面的示例中,我们定义了一个名为 bookSchema 的 Schema,其中包含了五个属性,分别为 titleauthorpublishDatepriceisPublished。这些属性的类型分别为 String、String、Date、Number 和 Boolean。

在定义完 Schema 后,我们可以使用它来创建一个 Mongoose 模型,如下所示:

在上面的代码中,我们使用 mongoose.model() 方法创建了一个名为 Book 的模型,该模型使用了 bookSchema 作为其数据结构定义。

Mongoose Schema 的详细属性设置

除了上面提到的数据类型外,Mongoose Schema 还有许多其他属性设置。下面我们将逐一介绍这些属性。

required

required 属性用于指定某个属性是否必须存在。如果该属性未被定义或者其值为 null,则会触发验证失败。示例如下:

在上面的示例中,我们使用了 required 属性来指定了每个属性都是必须存在的。

default

default 属性用于指定某个属性的默认值。如果该属性未被定义或者其值为 null,则会使用默认值。示例如下:

在上面的示例中,我们使用了 default 属性来指定了 price 的默认值为 0,isPublished 的默认值为 false。

unique

unique 属性用于指定某个属性是否唯一。如果该属性被定义为唯一,则会触发验证失败,如果该属性的值与数据库中已存在的值相同,则会触发唯一性验证失败。示例如下:

在上面的示例中,我们使用了 unique 属性来指定了 title 是唯一的。

enum

enum 属性用于指定某个属性的值必须在指定的范围内。示例如下:

在上面的示例中,我们使用了 enum 属性来指定了 category 的值必须为 fictionnon-fiction

validate

validate 属性用于指定某个属性的值必须满足指定的验证函数。验证函数接收一个参数,即要验证的属性值,返回一个布尔值,表示是否验证通过。示例如下:

在上面的示例中,我们使用了 validate 属性来指定了一个验证函数,该函数验证了 pages 的值必须大于 0。

Mongoose Schema 的实例应用

下面我们将通过一个完整的示例来演示 Mongoose Schema 的实际应用。假设我们要开发一个图书管理系统,其中需要对图书进行增、删、改、查等操作。下面是一个简单的示例:

在上面的示例中,我们首先定义了一个名为 bookSchema 的 Schema,其中包含了七个属性,分别为 titleauthorpublishDatepriceisPublishedcategorypages。然后我们使用 mongoose.model() 方法创建了一个名为 Book 的模型,该模型使用了 bookSchema 作为其数据结构定义。

接着我们使用 mongoose.connect() 方法连接到 MongoDB 数据库,并定义了四个异步函数,分别用于创建图书、获取图书、更新图书和删除图书。在 createBook() 函数中,我们使用 new Book(book).save() 方法将图书保存到数据库中。在 getBooks() 函数中,我们使用 Book.find().sort('title') 方法获取所有图书,并按照 title 属性排序。在 updateBook() 函数中,我们使用 Book.findByIdAndUpdate() 方法根据 ID 更新图书的 authorisPublished 属性。在 removeBook() 函数中,我们使用 Book.deleteOne() 方法根据 ID 删除图书。

最后,我们调用了 createBook()getBooks()updateBook()removeBook() 函数,分别执行了图书的创建、获取、更新和删除操作。

总结

本文详细介绍了 Mongoose Schema 的基础知识及其实例应用。Mongoose Schema 提供了一种简单而强大的方式来定义数据模型和数据验证规则,方便开发人员进行数据的操作和管理。掌握 Mongoose Schema 的基础知识对于开发 Node.js 应用程序是非常重要的。

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


纠错
反馈