Estamos tratando de importar un csv con alrededor de 30.000 líneas de datos en una base de datos MongoDB usando Mongoose . Hemos creado un modelo con algunos validadores para que solo se agreguen las filas correctas a la base de datos.
Primero leemos el csv con papaparse y creamos una matriz a partir de él. A continuación, insertamos los datos en la base de datos con el método mongoose Model.insertMany . Para seguir insertando datos cuando falla una fila usamos la opción ordered: false .
Todo esto funciona, pero estamos buscando una manera de recopilar las filas fallidas para poder verificar por qué una fila no pasó la validación.
¿Hay alguna forma de obtener las filas fallidas con el método insertMany ?
... const readCSV = async (filePath) => { const csvFile = fs.readFileSync(filePath); const csvData = csvFile.toString(); return new Promise(resolve => { Papa.parse(csvData, { header: true, transformHeader: header => header.trim(), complete: results => { console.log('Complete', results.data.length, 'records.'); resolve(results.data); } }); }); }; const start = async () => { try { await connectDB(process.env.DATABASE_URL); const parsedData = await readCSV(csvFilePath); const response = await Company.insertMany(parsedData, { ordered: false }); console.log(response); } catch(error) { console.log(error); } } start();