管道可以验证数据,也可以用来转换数据,Nest 内置了一个可以把字符串数据转换成数字值的管道, 下面可以试一下这个管道。
打开 posts.controller, 这里有个 show 方法,它有个 params 参数,这个参数的值就是地址参数, 我们给 @Param 这个装饰器一个参数值,id,这样 params 参数的名字可以换成 id。
方法 return 的东西就是 Post 后面加上 id 参数的值。上面可以再用一个 console.log 在控制台上输出 id 的类型,typeof id。
在客户端配置一个请求, 用 GET 方法, 请求一下 posts/3,在终端上检查一下输出到控制台上的值,你会发现,现在 id 参数值的类型是 string。
下面用一下 ParseInt 管道转换一下 id 参数的值的类型。
管道可以用在控制器,或者控制器方法,或者直接用在方法的参数上面,在 @Param 装饰器里,id 的后面再用一下 ParseIntPipe, 这样得到的这个 id 的参数的值就会被转换成数字。
回到客户端,发送一下这个请求,现在这个 id 的值的类型会是 number,没有使用 ParseIntPipe 这个管道之前,它的的值是 string。