如何在 Node JS 中下载带有外部 JSON 信息的 CSV?
How to download a CSV with the information of an external JSON in Node JS?
我开始使用 Node JS
进行开发,我正在创建一个应用程序来实现以下目标:
下载包含在 API 中找到的 JSON 信息的 CSV。我有一个内部文件,其中包含 JSON 所在的 url,我需要从 url 中提取信息并以 CSV 格式下载。我正在使用 json-2-csv
、node-fetch
和 fs
模块。
我的问题:我无法访问JSON中包含的信息来下载它
这是我的 controller
:
import { Request, Response } from 'express';
const converter = require("json-2-csv");
const fetch = require("node-fetch");
const fs = require("fs");
class IndexController {
public async index(req: Request, res: Response) {
const api =req.query.api; //api1
const url = conf.API_MOCS[`${api}`].url; //url containing the json
const getJson = async () => {
const response = await fetch(url);
const responseJson = await response.json();
return responseJson;
};
}
}
export const indexController = new IndexController();
问题是您从不调用 getJson
函数,即缺少 const jsonResponse = await getJson()
之类的调用。不过,并不是真的有必要在一个单独的函数中执行此操作。得到json后,需要传递给csv
-converter,最后通过res
-object.
发送response
这是一个简化的示例(仍然需要错误处理),它从伪造的 rest-api 中获取 json 并将其转换为 csv 并允许用户下载:
const express = require("express");
const app = express();
const port = 3000;
const converter = require("json-2-csv");
const fetch = require("node-fetch");
app.get("/", async (req, res) => {
const url = "https://jsonplaceholder.typicode.com/users";
const response = await fetch(url);
const jsonResponse = await response.json();
const csvString = await converter.json2csvAsync(jsonResponse);
res.setHeader("Content-disposition", "attachment; filename=data.csv");
res.set("Content-Type", "text/csv");
res.status(200).send(csvString);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
我开始使用 Node JS
进行开发,我正在创建一个应用程序来实现以下目标:
下载包含在 API 中找到的 JSON 信息的 CSV。我有一个内部文件,其中包含 JSON 所在的 url,我需要从 url 中提取信息并以 CSV 格式下载。我正在使用 json-2-csv
、node-fetch
和 fs
模块。
我的问题:我无法访问JSON中包含的信息来下载它
这是我的 controller
:
import { Request, Response } from 'express';
const converter = require("json-2-csv");
const fetch = require("node-fetch");
const fs = require("fs");
class IndexController {
public async index(req: Request, res: Response) {
const api =req.query.api; //api1
const url = conf.API_MOCS[`${api}`].url; //url containing the json
const getJson = async () => {
const response = await fetch(url);
const responseJson = await response.json();
return responseJson;
};
}
}
export const indexController = new IndexController();
问题是您从不调用 getJson
函数,即缺少 const jsonResponse = await getJson()
之类的调用。不过,并不是真的有必要在一个单独的函数中执行此操作。得到json后,需要传递给csv
-converter,最后通过res
-object.
这是一个简化的示例(仍然需要错误处理),它从伪造的 rest-api 中获取 json 并将其转换为 csv 并允许用户下载:
const express = require("express");
const app = express();
const port = 3000;
const converter = require("json-2-csv");
const fetch = require("node-fetch");
app.get("/", async (req, res) => {
const url = "https://jsonplaceholder.typicode.com/users";
const response = await fetch(url);
const jsonResponse = await response.json();
const csvString = await converter.json2csvAsync(jsonResponse);
res.setHeader("Content-disposition", "attachment; filename=data.csv");
res.set("Content-Type", "text/csv");
res.status(200).send(csvString);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});