Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
Las promesas no tienen método de cobro

Estoy tratando de usar el método de recopilación, pero parece que realmente no puedo usarlo como db.colección ya que db está llamando a connectDB y connectDB es en realidad una promesa que devuelve conn, que es mi mongoURI. Mi pregunta es ¿qué podría usar para poder llamar al método de recopilación con mi mongoURI para enviar los datos desde el front-end a la base de datos?

este es mi archivo db.js

 const mongoose = require("mongoose"); const connectDB = async () => { try { const conn = await mongoose.connect(process.env.MONGO_URI, { useUnifiedTopology: true, useNewUrlParser: true, }); console.log(`MongoDB Connected : ${conn.connection.host}`); return conn; } catch (err) { console.error(err.message); process.exit(1); } }; module.exports = connectDB;

index.js (donde estoy usando el método de recopilación):

 const express = require("express"); const cors = require("cors"); // Importing cors var request = require("request"); const dotenv = require("dotenv"); const port = 5000; var util = require("util"); const connectDB = require("./config/db"); require("dotenv").config({ path: "./config/config.env" }); const app = express(); dotenv.config(); const db = connectDB(); app.get("/", (req, res) => { res.send("Hey there!"); }); app.get("/Pinged", function (req, res) { res.send("Pinged!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); }); app.use(cors({ origin: "*" })); app.post("/stored", (req, res) => { console.log("its running 2: " + req.body); db.collection().insertOne(req.body, (err, data) => { if (err) return console.log(err); res.send("saved to db: " + data); }); }); app.listen(port, () => console.log(`Example app listening on port ${port}!`));

Es posible que haya algunos errores en el código, ya que no trabajo en el back-end con demasiada frecuencia, así que hágamelo saber si hay alguno.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si está utilizando una versión lo suficientemente reciente de Node.js que admite await de nivel superior, simplemente await la llamada a la función async :

 const db = await connectDB();

Alternativamente, si no puede usar la await de nivel superior, puede resolver la Promesa cuando lo necesite. Por ejemplo:

 app.post("/stored", (req, res) => { console.log("its running 2: " + req.body); db.then(conn => { conn.collection().insertOne(req.body, (err, data) => { if (err) return console.log(err); res.send("saved to db: " + data); }); }); });

No estoy 100 % seguro de manejar estas conexiones, y otra opción podría ser eliminar la llamada de nivel superior a connectDB() por completo e invocarla en cada solicitud:

 app.post("/stored", (req, res) => { console.log("its running 2: " + req.body); connectDB().then(db => { db.collection().insertOne(req.body, (err, data) => { if (err) return console.log(err); res.send("saved to db: " + data); }); }); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda