Mongoose 之 Schema 和 Model 详解

阅读时长 6 分钟读完

在 Node.js 框架中,使用 Mongoose 是必不可少的一步。而在使用 Mongoose 的时候,Schema 和 Model 是不可或缺的两部分。本文将会详细讲解 Mongoose 中的 Schema 和 Model 的概念、用法,并附带实例代码,帮助读者深入理解。

Schema 是什么?

在 Mongoose 中,Schema 可以看作是一个集合的定义。它规定了集合中文档的结构,包含了字段名称、类型、默认值、格式校验等等。Schema 可以通过一个对象来定义。每一个 Schema 都需要一个 _id 字段。

下面是一个简单的 Schema 的例子:

-- -------------------- ---- -------
----- - ------ - - --------------------

----- ---------- - --- --------
  ----- -------
  ---- -------
  ------ -
    ----- -------
    --------- -----
    ------- -----
  --
---

在上面的例子中,定义了一个叫做 userSchema 的 Schema,包含了三个字段:nameageemail。其中 email 字段定义了 typerequiredunique 三个属性,分别表示类型为字符串、必填、唯一。

需要注意的是,Schema 中还可以定义虚拟属性(virtual)和 getters/setters(即当我们读取属性值的时候、或者设置属性值的时候、对其进行操作)等。

Model 是什么?

Model 则是 Mongoose 中的核心概念,它是与数据库进行交互的对象。Model 是由 Schema 创建而来,每个 Model 都是一个集合(collection)的代表,并且具有增删改查等操作的能力。我们平时的 CRUD 操作就是直接通过 Model 进行的。

下面是一个通过 Schema 创建 Model 的例子:

在上面的例子中,通过 model() 方法创建了一个名叫 User 的 Model,指定它使用前面定义的 userSchema。这样就创建了一个表名为 users 的集合,并可以用 User 对象进行操作。

可以看到,创建 Model 的时候需要传递两个参数,一个是集合的名称,另一个则是该集合对应的 Schema。

增删改查怎么做?

对于一个已经通过 Schema 和 Model 定义好的集合,我们可以直接使用它提供的方法进行 CRUD 操作。下面是一些常用的方法:

1. 插入数据

我们可以通过 create() 方法来插入一条新数据。它的用法是:

上面的例子中,首先定义了一个 newUser 对象,表示要新增的用户信息,然后使用 User.create() 方法来将这个对象插入到数据库中。

当然,也可以使用 save() 方法来插入数据,它的用法如下:

2. 查询数据

查询数据是最常见的数据操作之一。Mongoose 提供了很多种查询方式,下面是其中几种常见的:

-- -------------------- ---- -------
-- ------
------------- ----- ----- -- - -- --- -- ---

-- --------
----------- ----- ---- -- ----- ----- -- - -- --- -- ---
----------- ---- - ----- -- - -- ----- ----- -- - -- --- -- ---

-- ------
-------------- ------ ---------------------- -- ----- ----- -- - -- --- -- ---

上面的例子中,我们可以看到 find() 方法和 findOne() 方法。第一个方法返回多个数据,而第二个方法则是返回一个数据。两者的参数都是一个查询条件对象,不同的是,find() 方法返回的是一个数组,而 findOne() 方法返回的是一个对象。

Mongoose 中还提供了更高级的查询方式,比如 findById()where() 等方法。读者可以自行了解,这里不再赘述。

3. 更新数据

最常见的更新方式就是通过 updateOne() 方法来更新一条数据。其用法如下所示:

上面的例子中,我们通过 updateOne() 方法更新一条数据。首先我们传递了一个查询条件对象 { email: 'xiaoming@example.com' } 表示我们要更新哪一条数据。然后我们传递了一个更新对象 { age: 19 },其中只包含了要更新的部分。

4. 删除数据

删除数据也是常见的数据操作之一。可以使用 deleteOne() 方法或 deleteMany() 方法来删除一条或多条数据。它们的用法如下:

总结

在本文中,我们详细讲解了 Mongoose 中的 Schema 和 Model 的概念、用法,并通过例子代码帮助读者深入理解。希望本文可以帮助大家更好地掌握 Mongoose,顺利开发应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ddc192f6b2d6eab38fecaa

纠错
反馈