• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

579
Views
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 3 years ago · Santiago Trujillo
1 answers
Answer question

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 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error