用户登录

应用需要存储用户头像相关的数据,在 AvatarModule 里面可以添加一个实体。在终端,项目所在目录的下面,执行 npm run gt 生成一个实体,名字是 avatar,放在 avatar/entities 目录的下面。

回到项目,打开 AvatarModule 模块,先做点配置,在模块里添加一个 imports,一个数组,里面用一下 TypeOrmModule.forFeature,一个数组,里面添加一个 AvatarEntity。然后再添加一个 exports ,在模块的导出这里导出 TypeOrmModule。

在数据库客户端,打开应用的数据仓库观察一下,如果一切正常的话,在应用的数据仓库里会出现一个 avatar 数据表。

定义实体

回到项目,打开 AvatarEntity 这个实体,下面给它再添加几个字段,用 @Column 装饰一下,添加一个 mimetype,类型是 string,这个 mimetype 存储的是文件的类型。再添加一个字段,同样使用 @Column 装饰,名字是 filename,类型是 string,存储的是头像文件的名字。

再添加一个字段,名字是 size ,类型是 number ,存储的是文件的大小,然后再添加一个字段,名字是 userId,类型是 number,它存储的是头像所属的用户的 id。

在数据库客户端,观察一下 avatar 这个数据表的结构,你会发现这里会多了几个字段。这里这个 userId 需要跟 user 表建立一个关联。

我们在定义这个实体的时候可以描述一下它跟用户实体之间的关系,用一个 @OneToOne 装饰器定义一个一对一的关系,提供一个函数参数,返回的东西就是关系的实体,这里应该是 UserEntity,再添加一个选项参数,设置一下 onDelete ,值可以设置成 CASCADE,这样在删除用户数据的同时,会把相关的头像数据也一块儿删除掉。

下面再用一个 @JoinColumn() 装饰器。属性的名字是 user,类型是 UserEntity。

回到数据库客户端观察一下,刷新一下应用界面,你会发现,这个 userId 字段的 foreign_key 这里,现在会变成 user 表的 id。打开它再观察一下,这个 On Delete 被设置成了 CASCADE。

定义头像实体(AvatarEntity)《 Nest.js 企业级后端实践:用户头像 》

统计

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

社会化网络

关于

微信订阅号

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