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

139
Visualizações
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 Respostas
Responde à pergunta

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 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