Estoy usando nodejs para migrar datos a mongodb, el archivo json que estoy tratando de migrar es demasiado grande, cuando intento migrar solo algunos datos (alrededor de 8000 documentos), funciona, de lo contrario, tengo este problema:
MongooseError: Operation `products.insertOne()` buffering timed out after 10000ms at Timeout.<anonymous> (\migration- module\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:148:23) at listOnTimeout (internal/timers.js:557:17) at processTimers (internal/timers.js:500:7) MongooseError: Operation `products.insertOne()` buffering timed out after 10000ms at Timeout.<anonymous> (\migration- module\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:148:23) at listOnTimeout (internal/timers.js:557:17) at processTimers (internal/timers.js:500:7)la secuencia de comandos :
/** @format */ fs = require('fs') var mongoose = require('mongoose') mongoose.connect('mongodb://host') mongoose.Promise = global.Promise var schema = new mongoose.Schema({ //some fields }) var d = fs.readFileSync('./data/file.json', 'utf8', (err, data) => { if (err) throw err return d }) var e = JSON.parse(d) var Product = mongoose.model('product', schema) //console.log(e) for (var i = 0; i < e.length; i++) { // data process // another data process var product = new Product(e[i]) product.save(function (err) { if (err) return console.log(err) }) } e.length === i ? console.log('Migration Done successfully') : ''¿alguna solución para solucionar este problema, por favor?
Deshabilitar el almacenamiento en búfer y algunas otras correcciones:
fs = require('fs') var mongoose = require('mongoose') mongoose.set('bufferCommands', false); var schema = new mongoose.Schema({ //some fields }) var Product = mongoose.model('product', schema) var d = fs.readFileSync('./data/file.json', 'utf8', (err, data) => { if (err) throw err return data // <= corrected here }) var e = JSON.parse(d); //console.log(e) async function main() { await mongoose.connect('mongodb://host') // <= corrected here for (var i = 0; i < e.length; i++) { // data process // another data process var product = new Product(e[i]); await product.save(); // <= corrected here }) } main().then(()=>{console.log('Migration Done successfully')})