Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

180
Views
No puedo leer datos de la colección en MongoDB Atlas Trigger

Nuevo en MongoDB, muy nuevo en Atlas. Estoy tratando de configurar un disparador para que lea todos los datos de una colección llamada Config . Este es mi intento:

 exports = function(changeEvent) { const mongodb = context.services.get("Cluster0"); const db = mongodb.db("TestDB"); var collection = db.collection("Config"); config_docs = collection.find().toArray(); console.log(JSON.stringify(config_docs)); }

la función es parte de una aplicación de dominio creada automáticamente llamada Triggers_RealmApp , que tiene Cluster0 como fuente de datos vinculada con nombre. Cuando entro en Colecciones en Cluster0, TestDB.Config es una de las colecciones.

Algunas notas:

  • no arroja un error, sino que simplemente devuelve {} .
  • Cuando cambio context.services.get("Cluster0"); a otra cosa, arroja un error
  • Cuando cambio "TestDB" a una base de datos que no existe, o "Config" a una colección que no existe, obtengo el mismo resultado; {}
  • Intenté crear nuevas aplicaciones de Realm, crear servicios manualmente, crear nuevas bases de datos y nuevas colecciones, etc. Sigo encontrando el mismo problema.
  • La referencia de mongo docs promete y espera, que no he visto en ningún ejemplo (enlace) . Intenté experimentar un poco con eso y no llegué a ninguna parte. Por lo que puedo decir, lo que ya he hecho es la forma típica de hacerlo.

Imágenes: Colección: Base de datos TestDB y colección de configuración Fuente de datos vinculada: Fuente de datos vinculada, Cluster0

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Terminé tomándolo directamente con MongoDB, .find() es asíncrono y lo estaba manejando incorrectamente. Aquí está la respuesta directamente de la boca de los caballos:


Según tengo entendido, no está obteniendo los resultados esperados de la consulta que publicó anteriormente. ¡Sé que puede ser confuso cuando recién está comenzando con una nueva tecnología y no puede hacer que algo funcione!

El problema es que la función collection.find() es una función asíncrona. Eso significa que envía la solicitud pero no espera la respuesta antes de continuar. En su lugar, devuelve una Promesa, que es un objeto que describe el estado actual de la operación. Dado que una Promesa realmente no es una matriz, su declaración collection.find().toArray() está devolviendo un objeto vacío. Escribe este objeto vacío en console.log y finaliza su función, probablemente antes de que la llamada asíncrona incluso regrese con sus datos.

Hay un par de maneras de lidiar con esto. La primera es hacer que su función sea asíncrona y usar el operador await para decirle a su función que espere a que la función collection.find() regrese antes de continuar.

 exports = async function(changeEvent) { const mongodb = context.services.get("Cluster0"); const db = mongodb.db("TestDB"); var collection = db.collection("Config"); config_docs = await collection.find().toArray(); console.log(JSON.stringify(config_docs)); };

Observe la palabra clave async en la primera línea y la palabra clave await en la penúltima línea.

El segundo método es usar la función .then para procesar los resultados cuando regresen:

 exports = function(changeEvent) { const mongodb = context.services.get("Cluster0"); const db = mongodb.db("TestDB"); var collection = db.collection("Config"); collection.find().toArray().then(config_docs => { console.log(JSON.stringify(config_docs)); }); };
about 4 years ago · Juan Pablo Isaza Report

0

La conexión debe ser una conexión al conjunto de réplicas principal y las credenciales de inicio de sesión del usuario son de un usuario de nivel de administrador (debe tener un permiso de administrador del clúster)

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!