Estoy intentando importar un CSV usando mi modal mangosta e independientemente de su tamaño, estoy importando las primeras 2 filas y luego cada dos filas.
const fs = require('mz/fs'); const { parse } = require('@fast-csv/parse'); const streamToIterator = require('stream-to-iterator'); mongoose.Promise = global.Promise; mongoose.set('debug', true); const Product = require('./schemas/Product'); mongoose.Promise = global.Promise; const options = { useNewUrlParser: true, useUnifiedTopology: true, }; const database = mongoose .connect( process.env.DATABASE_URL, options ) .then((db) => (async function () { console.log('Connected to database.'); try { await Promise.all( Object.entries(db.models).map(([k, m]) => m.deleteMany()) ); let headers = Object.keys(Product.schema.paths).filter( (k) => ['_id', '__v'].indexOf(k) === -1 ); if (await fs.exists('./database.csv')) { let stream = fs .createReadStream('./database.csv') .pipe(parse({ headers })); const iterator = await streamToIterator(stream).init(); let buffer = [], counter = 0; for (let docPromise of iterator) { let doc = await docPromise; buffer.push(doc); counter++; if (counter > 10000) { await Product.insertMany(buffer); buffer = []; counter = 0; } } if (counter > 0) { await Product.insertMany(buffer); buffer = []; counter = 0; } } } catch (e) { console.error(e); } })() ) .catch((err) => console.error('Error connecting to database:', err)); module.exports = database;Cuando miro mi variable doc, ya está en un estado incorrecto (cada dos filas) y cuando estoy leyendo la secuencia, ya está en un estado incorrecto, ¿así que asumo que está ocurriendo por ahí?
Lo que terminé haciendo para resolver esto fue simplemente convertir el CSV en JSON e importarlo normalmente. No es ideal o realmente aborda el problema subyacente, pero mi base de datos tiene lo que necesita.