Estoy tratando de recibir todos los campos en mi base de datos en mi llamada API
Mi código:
exports.objfields = async (req, res, next) => { try { var db = mongo.connection; var objeto = req.headers.objeto; const result = db.db.collection(objeto).find(); return res.status(200).send({message:result}); } catch (error) { return res.status(401).send({ message: error.message }); } };
Para los resultados 200, me devuelve la siguiente oración "message": {"_events": {},"_eventsCount": 0}
, ¿cómo puedo devolver los campos en la llamada a la API? (obs. También probé find({})
, pero devuelve lo mismo)
Veo dos problemas con tu código:
¿Estás seguro de que debería ser: db.db.collection
y no db.collection
? Es difícil saberlo sin ver el código de inicio de la base de datos, pero primero verifíquelo dos veces.
Debe usar async/await para esperar a que MongoDB devuelva el resultado a su aplicación Node:
const result = await db.collection(objeto).find();
find()
devuelve una promesa JS, no un valor directo inmediatamente. Para obtener más detalles sobre async/await, puede consultar:
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await
Si termina con un objeto Cursor pero no puede ver los valores, intente convertir el Cursor en una matriz usando toArray()
:
Por ejemplo:
const cursor = collection.find({}); const allValues = await cursor.toArray();