用户登录

在 post 表里面现在会存储它跟 user 之间的关系,userId 字段的值应该是这个内容的作者的 id 号,我们之前手工设置一下这些记录的 userId 的值。

回到项目,打开 PostService,找到 index 方法,它会返回一组内容,用的是 postRepository 的 find,如果你想在返回的内容实体上面包含内容的作者相关的数据,可以给 find 一个对象,里面添加一个 relations,需要的关系是 user。

在 HTTP 客户端,配置一个请求,用 GET 方法,请求 posts 这个地址。返回的结果里面,post 项目里会出现一个 user 属性,它的值就是内容的作者。

还要注意的是返回的 user 里面会包含 password 属性,回到项目,打开 PostController 控制器,找到 index 方法,在它上面添加一个拦截器,@UseInterceptors,要用的拦截器是 ClassSerializerInterceptor。

定义 User 实体的时候,我们用 @Exclude 装饰了 password 字段,所以这里用了这个拦截器,就会在响应里去掉 User 里的 password。

回到 HTTP 客户端,再发送一下这个请求,这回你会发现 User 的 password 属性就不会再出现了。

下面再创建一个新的请求,名字叫 User Show,方法是 GET。设置一下请求的地址,localhost:3000/users/1,得到的响应就是对应的用户数据,在在这个响应里可以包含用户发布的内容。

回到项目,打开 UserService,找到 show 这个方法.. 在这里用的 userRepository 上的 findOne,给它一个对象参数,添加一个 relations,设置一下需要的关系,添加一个 posts,这个 posts 就是我们在 User 实体上定义的一个 OneToMany 的关系。

回到 HTTP 客户端,重新请求一个这个用户资源,这回得到的响应里面,会包含一个 posts 属性,它里面的数据就是这个用户发布的一组内容。

查询内容关系(一对多 / 多对一)《 Nest.js 应用框架:内容关系 》

统计

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

社会化网络

关于

微信订阅号

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