Tengo un enlace de csv. Entonces, lo que quiero es que cuando mi página se cargue por primera vez, quiero descargar el archivo csv desde un enlace y almacenarlo en una carpeta pública. Para poder tomarlo desde allí y mapear sus datos convirtiéndolo en JSON.
En primer lugar, necesita un servidor express. Después de eso, cree un archivo csv.js (quizás dentro de la carpeta "utils") en su backend. Dentro escribe este código:
const { readJSON, writeJSON, writeFile, readFile, remove, createReadStream, createWriteStream, } = fs; import fs from "fs-extra"; import { fileURLToPath } from "url"; import { dirname, join } from "path"; const authorsJSONPath = join( dirname(fileURLToPath(import.meta.url)), "../authors.json" ); export const getAuthorsReadableStream = () => createReadStream(authorsJSONPath);Entonces, por supuesto, necesita el servidor y las rutas. Importe el enrutador en su servidor y especifique un punto final. Si sabes cómo hacerlo, crea esta ruta e importa lo que necesites. Necesitarás el paquete json2csv
importar json2csv desde "json2csv";
// Get CSV files router.get("/download/csv", async (req, res, next) => { try { res.setHeader("Content-Disposition", `attachment; filename=Authors.csv`); const source = getAuthorsReadableStream(); const transform = new json2csv.Transform({ fields: ["id", "name", "surname", "email", "dateOfBirth", "avatar"], }); const destination = res; pipeline(source, transform, destination, (err) => { if (err) next(err); }); } catch (error) { next(error); } });Si solo desea tener esos datos para mapearlos, y no para que el usuario los descargue, cree un archivo JSON y mapéelos en su lugar.
Para cualquier soporte o problema adicional, simplemente pregunte aquí.