保存文件数据的时候需要知道文件所属的内容的 id ,这个内容 id 可以通过接口的一个查询参数传递过来。在终端,执行一下 nest g class 生成一个类,名字是 create-file-query.dto ,放在 file/modules/create/dtos 里面,加上 --flat 选项。
回到项目,打开这个 CreateFileQueryDto ,在这个类里面添加一个 post 属性,类型是 number,在它上面用 @IsNotEmpty 装饰一下,表示这个属性的值不能为空。一个选项参数,设置一下错误信息,post 查询符必须有值。
查询符默认的值都是字符串,我们可以使用 ValidationPipe 这个管道的自动转换功能,把数据自动转换成需要的类型。打开 app-common.module ,在这个 ValidationPipe 里面,把 transform 设置成 true,再添加一个 transformOptions,一个对象,所 enableImplicitConversion 设置成 true。
打开 FileCreateController ,在 createFile 这个接口的处理器上面,用 @Query 装饰器,装饰一个参数,名字是 query,类型是 CreateFileQueryDto。
在这个方法里面,可以在控制台上输出一个 typeof query.post 。检查一下 query 里的 post 这个属性的类型。
测试
在 Http 客户端,发送一下这个创建文件请求,这回得到一个异常响应,提示 post 查询符必须有值,在接口地址上面,加上一个 post 查询符,它的值是一个内容的 id,比如 1 。然后再发送一下这个请求。
在控制台,观察一下 query.post 它的类型,这里显示它是一个 number 类型的数据。这是因为我们打开了 ValidationPipe 的自动转换功能,不然的话这个属性的值的类型应该是一个 string。