用户登录

保存文件数据可以执行一个命令,在项目下面生成一个命令,执行 npm run gc 名字是 create-file ,放在 file/modules/create/commands 目录的下面。

回到项目,打开 CreateFileCommand 这个命令,设置一下命令参数,需要一个 userId 用户的 id,类型是 number,还需要一个 postId,所属内容的 id,类型是 number,再添加一个 metadata ,类型是 ExifParserResult 。再添加一个 file ,类型是 Express.Multer.File 。

打开这个命令的处理器,在命令处理器的构造方法里面注入一个 Repository ,实体类型是 FileEntity ,名字叫 fileRepository ,再导入需要的这些东西。

然后在 execute 方法里面,先解构一下命令参数,需要的是 userId,postId,file ,还有 metadata。这里我们可以继续再解构这个 file,需要的是 originalname 文件的原名,mimetype 文件的类型,filename 文件名,还有 size 文件的大小。

下面用 let 声明一个 fileData ,用一下 this.fileRepository.create ,一个对象参数,里面添加一个 userId,postId,originalname,mimetype,filename 还有 size 。

然后可以再判断一下 metadata,如果它有值,再解构一下这个 metadata,需要的是 imageSize 还有它里面的 tags,这个 tags 里面包含的东西就是照片的拍摄设备,拍摄参数这些东西。继续再解构一下这个 imageSize,需要的是 width 宽度,还有 height ,图像的高度。

下面设置一下 fileData,等于一个对象,先把 fileData 原有的东西放进来,再添加一个 width,然后是 height,还有 metadata,对应的值就是 tags 。

准备好要保存的文件数据以后,声明一个 file ,等于 await 用一下 this.fileRepository.save 把准备好的 fileData 交给这个方法。

最后让命令处理器返回一个对象,里面有个 insertId,对应的值就是新创建的文件数据里的 id 这个属性的值。

定义创建文件命令(CreateFileCommand)《 Nest.js 企业级后端实践:文件上传 》

统计

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

社会化网络

关于

微信订阅号

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