在 MEAN Stack 中将用户 ID 添加到帖子中

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

在我们之前的章节中,我们成功地将 creator 键添加到我们的数据模式中。现在,我们需要将用户 ID 添加到帖子中,因此在本节中,我们将学习如何将帖子与用户 ID 连接起来。为此,我们将对一些帖子路由进行更改。我们将使用以下步骤来完成此操作

1) 我们将转到我们的帖子路由,即路由文件夹中的 posts.js 文件。我们将到达创建新帖子的路由。在此路由中,我们存储标题、内容和图片路径,现在我们也需要填充 creator 字段。我们将添加 creator 属性,对于它的值,我们有一个问题,即从哪里获取用户 ID。我们将通过解码令牌从令牌中获取 ID。我们将解码令牌以获取信息。

现在,如果我们返回到我们的中间件,我们已经验证了令牌,并且验证方法为我们检索了令牌。它为我们提供了一个解码后的令牌。因此,我们首先将结果存储在一个常量中,然后我们可以访问该令牌内部的数据。


Adding the User ID to Posts in MEAN Stack

2. 现在,我们不需要 checkAuth 方法中的数据。我们需要它在创建新帖子的帖子路由中。现在,很酷的是 ExpressJS,我们正在使用的 NodeJS 框架,使我们能够轻松地向请求对象添加新的数据片段,新字段。如果我们的中间件随后调用 next,则请求将移至下一个中间件,并且它将保留我们添加到它的任何字段。因此,我们将简单地访问请求,然后添加一个新字段;只需确保不覆盖已经存在的字段即可。我们将添加 userData 字段,并分配一个 JavaScript 对象作为值,该 JavaScript 对象 包含电子邮件和用户 ID。


Adding the User ID to Posts in MEAN Stack

现在,此 check-auth 中间件之后运行的每个中间件都将获取额外的这部分信息。

3) 如果我们查看我们的 post.js 文件,我们将看到我们尝试创建新帖子的中间件在 check-auth 中间件之后运行。这意味着我们将拥有额外的这部分信息,即 userData 字段。因此,现在,我们将以以下方式将值传递给我们之前创建的 creator 字段


Adding the User ID to Posts in MEAN Stack

现在,我们应该能够将用户 ID 存储为我们帖子的一部分。

4) 现在,我们将返回到我们的 posts.service.t 文件,我们在其中获取所有帖子。我们将简单地转到我们的 subscribe 方法,并控制台记录我们的 transformedPostData 以确保它们是否包含 userId。


Adding the User ID to Posts in MEAN Stack

5) 需要记住的一件事是,我们在 subscribe 方法的上方映射了帖子数据。现在,我们将其映射到一个新对象中,在该对象中我们不再使用该 creator Id。因此,我们也会在这里添加该 creator Id 字段。


Adding the User ID to Posts in MEAN Stack

现在,我们将保存所有文件并返回到我们的 angular 应用程序。如果我们添加一个新帖子,我们将看到附加到帖子的创建者信息。

Adding the User ID to Posts in MEAN Stack

现在,我们将用户 ID 与帖子关联起来,并且我们的代码也运行良好。在下一节中,我们将使用后端上的 creator ID 来拒绝任何其他用户对给定帖子的删除或更新请求。