首页 > 解决方案 > 如何从nestjs中的URL将数据下载到JSON文件中?

问题描述

我正在尝试从 Nestjs 中的 URL 将数据下载到 JSON 文件中,但我不知道该怎么做。

下面是我参考这个答案的控制器功能。

export class DataController {
constructor(private readonly httpService: HttpService) { }

@Get()
async download(@Res() res) {
    const writer = createWriteStream('user.json');

    const response = await this.httpService.axiosRef({
        url: 'https://api.github.com/users/prasadg',
        method: 'GET',
        responseType: 'stream',
        headers: {
            'Content-Type': 'application/json',
        }
    });

    response.data.pipe(writer); <--- Error here:  Property 'pipe' does not exist on type 'unknown'.

    return new Promise((resolve, reject) => {
        writer.on('finish', resolve);
        writer.on('error', reject);
    });
}

正如我上面提到的,它显示错误

错误 TS2339:“未知”类型上不存在属性“管道”

预期结果:我想将 json 数据写入服务器上我的文件夹中的文件 (user.json)。

我该如何解决这个问题?

标签: nestjshttpservice

解决方案


这只是类型错误,请通过以下命令确保 axios 在您的项目中:

npm i axios 

然后只需在响应变量中声明类型

@Get()
    async download() {
        const writer = createWriteStream('user.json');
        // response variable has to be typed with AxiosResponse<T> 
        const response: AxiosResponse<any> = await this.httpService.axiosRef({
            url: 'https://api.github.com/users/prasadg',
            method: 'GET',
            responseType: 'stream',
        });

        response.data.pipe(writer);

        return new Promise((resolve, reject) => {
            writer.on('finish', resolve);
            writer.on('error', reject);
        });
    }

推荐阅读