在 MEAN Stack 中从数据库获取数据

2025年3月17日 | 阅读 3 分钟

在前面的章节中,我们学习了如何使用 MongoDB shell 连接到数据库,并看到了从 MongoDB shell 访问它的命令。在本节中,我们将学习如何获取存储在数据库中的数据。我们将再次更改我们的 app.js 文件。

我们将执行以下步骤从数据库获取数据

1) 我们将回到我们的 app.js 文件,并到达 get() 方法,我们在其中将虚拟数据返回给我们的客户端。现在,我们将不会在这里返回虚拟数据。我们将返回真实数据,因此我们将在我们的代码中摆脱它。

Fetching data from the database in MEAN Stack

2) 现在,我们将从 posts 集合中获取数据。之前,我们借助我们的 post 模型创建了一个 post,并且我们在 post() 方法中使用 new 关键字实例化了该模型。我们将再次使用 post 模型来获取数据,但这次我们在没有关键字的情况下使用它。我们将使用 mongoose 提供的静态方法,即 find() 方法。

这个 find() 方法将返回数据库中的所有条目。这个 find() 方法也可以配置为缩小我们得到的结果,但是我们将获取当时的所有结果。这个函数将以下列方式使用


Fetching data from the database in MEAN Stack

3) 有两种方法来获取这些结果并使用它们

a. 我们可以传递一个函数,该函数将在完成后执行。这个函数回调将获得两个参数,即错误和它获取的结果或文档。这将以下列方式编码


Fetching data from the database in MEAN Stack

b. 除了使用回调之外,我们还将链接一个 then 块。这个 then 块将保存我们的结果,因此我们将在这个块中获得所有文档。在获得所有文档后,我们将以下列方式将这些文档 console.log


Fetching data from the database in MEAN Stack

4) 我们还需要添加一个 catch 块来处理错误,但是我们稍后会这样做。现在,我们将重新加载我们的 Angular 前端。

Fetching data from the database in MEAN Stack

我们在这里收到一个错误,因为在响应中,我们使用了 posts 数组,我们之前已经删除了它。

5) 现在,我们将把 posts 数组替换为响应中的文档,并且我们将把这个响应代码放入 then 块中。这很重要,并且我们必须在这个 then 块中执行它,因为获取该数据是一个异步任务。因此,完整的 app.get() 方法将以下列方式设计


Fetching data from the database in MEAN Stack

6) 我们希望在前端获得一个 ID 字段,但是在后端,它的名称是 _id。我们将通过在服务器上重命名它来修复它。在 get() 方法中,我们不会直接将文档分配给 posts。我们将以下列方式将 document.map() 分配给 posts

注意:我们将在后面的代码中使用 map() 方法。

现在,我们重新加载我们的 Angular 前端,我们将在展开面板中看到数据。

Fetching data from the database in MEAN Stack

我们的文档数据也将在我们的控制台中可见。

Fetching data from the database in MEAN Stack

在下一节中,我们将学习如何在 MEAN Stack 中转换响应数据。

下载完整项目(从数据库获取数据.zip)