用户登录

现在发布新内容的时候需要存储一下内容跟用户的关系,就是记录一下内容是谁发布的,先打开 PostController,找到处理发布新内容的方法,就是这个 store 方法。

在这个方法的上面我们用了一个 AuthGuard 验证用户的身份,如果验证通过就会在请求里带着 user 属性,之前我们定义一个参数装饰器可以返回请求里的 user 属性。

在 store 方法的上面,用一下 @User 这个装饰器,参数的名字叫 user,它的类型应该是一个 User 实体。

导入 User 实体的时候会出现冲突,因为已经导入了一个叫 User 的装饰器,可以这样,在导入 User 实体的时候用一个 as 重新给它起个名字,UserEntity 。

这个 user 属性的类型就可以设置成 UserEntity。把这个 user 参数交给 postService 的 store 方法,再打开 PostService,找到服务里的 store 方法。

现在它接收一个新的参数叫 user,因为在存储内容的时候也要记录一下发布内容的用户,它的类型是 User 实体。

方法里面用了 Repository 上的 save 去存储数据,这里我们把上面创建的这个 Post 实体交给了这个方法,现在我们需要保存一下发布内容的用户是谁,可以给 save 一个对象,然后先把 entity 里的东西放进来。

再添加一个 user 属性,对应的值就是方法里的 user 参数。

回到 HTTP 客户端试一下。

打开 Post Store 这个请求,设置一下要发布的内容的标题,还有内容的正文, 发送一下这个请求。

成功以后会响应新创建的这个内容实体,再到数据库客户端检查一下,这里你会发现新创建的这个内容,已经设置了它的 userId 字段的值,记录了一下这个内容的作者是谁。

在这个请求里,包含了登录成功签发的 JWT ,我们的应用会解析这个 JWT 里的内容,查询出对应的用户实体,这个用户实体会交给存储内容的方法。

存储内容关系(多对一)《 Nest.js 应用框架:内容关系 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点