Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

611
Visualizações
Cómo insertar nuevos datos en mongoDB usando un subproceso de trabajo en nodejs

Quiero insertar datos en mongoDB usando worker thread de trabajo

En este momento tengo un archivo de trabajo, el propósito completo del archivo de trabajo es guardar los datos en mongoDB y mainjs está enviando el nombre del agente que quiero guardar en mongoDB

trabajador.js

 const { workerData, parentPort } = require('worker_threads') const Agent = require('../models/agent') console.log("Worker thread is running like a hell: ", workerData) const processRecord = async () => { const agent = new Agent({agent:workerData}) try { await agent.save() }catch(e) { console.log(e) } } processRecord();

principal.js

 const express = require('express') const router = new express.Router() const { Worker } = require('worker_threads') router.post('/agent', async (req, res) => { function runService(workerData) { return new Promise((resolve, reject) => { const worker = new Worker('../src/router/worker.js', { workerData }); worker.on('message', resolve); worker.on('error', reject); worker.on('exit', (code) => { if (code !== 0) reject(new Error(`Worker stopped with exit code ${code}`)); }) }) } async function run() { const result = await runService('john wick') console.log("this is from main thread " + result); } run().catch(err => console.error(err)) })

Cuando trato de guardar los datos usando un subproceso de trabajo, aparece este error:

 MongooseError: Operation `agents.insertOne()` buffering timed out after 10000ms at Timeout.setTimeout (F:\node\insuredmine\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:184:20) at ontimeout (timers.js:436:11) at tryOnTimeout (timers.js:300:5) at listOnTimeout (timers.js:263:5) at Timer.processTimers (timers.js:223:10)

y cuando ejecuto la misma línea de código sin subproceso de trabajo, funciona bien.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Necesitaría configurar mongoose y conectarse a MongoDB dentro de un subproceso de trabajo porque Worker ha aislado env ie su propio ciclo de eventos, etc. aquí. Los trabajadores solo son útiles cuando tiene tareas sincrónicas de larga duración para realizar, por ejemplo, cifrar un archivo, cambiar el tamaño de una imagen o procesamiento de datos complejos, clasificar datos grandes, etc.

Puede consultar este artículo para ver el código de ejemplo https://henrikgronvall.com/articles/nodejs-worker-threads/

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda