¿Cómo conectar Node.js a una base de datos MongoDB?

MongoDB es una base de datos NoSQL utilizada para almacenar grandes cantidades de datos sin ninguna tabla de base de datos relacional tradicional. En lugar de filas y columnas, MongoDB usó colecciones y documentos para almacenar datos. Una colección consta de un conjunto de documentos y un documento consta de pares clave-valor que son la unidad básica de datos en MongoDB.

Asegúrese de que MongoDB se instale en su PC.

Para conectar una aplicación Node.js a MongoDB, tenemos que usar una biblioteca llamada Mongoose .  

const mongoose = require("mongoose");

Después de eso, tenemos que llamar al método connect de Mongoose

mongoose.connect("mongodb://localhost:27017/collectionName", {
   useNewUrlParser: true,
   useUnifiedTopology: true
});

Entonces tenemos que definir un esquema. Un esquema es una estructura que brinda información sobre cómo se almacenan los datos en una colección.

Ejemplo: Supongamos que queremos almacenar información de un formulario de contacto de un sitio web.

const contactSchema = {
   email: String,
   query: String,
}; 

Luego, tenemos que crear un modelo usando ese esquema que luego se usa para almacenar datos en un documento como objetos.

const Contact = mongoose.model("Contact", contactSchema);

Luego, finalmente, podemos almacenar datos en nuestro documento.

app.post("/contact", function (req, res) {
   const contact = new Contact({
       email: req.body.email,
       query: req.body.query,
   });
   contact.save(function (err) {
       if (err) {
           res.redirect("/error");
       } else {
           res.redirect("/thank-you");
       }
   });
});

Ahora comprendamos el funcionamiento con la ayuda de un ejemplo de código. 

Contacto.ejs

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content=
              "width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="/contact" method="post">
        <input type="text" placeholder="Email" name="email">
        <input type="text" placeholder="Query" name="query">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

Archivo de servidor ( App.js o Index.js )

Javascript

const express = require("express");
const ejs = require("ejs");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
  
mongoose.connect("mongodb://localhost:27017/newCollection", {
  useNewUrlParser: true,
  useUnifiedTopology: true
});
  
const contactSchema = {
  email: String,
  query: String,
};
  
const Contact = mongoose.model("Contact", contactSchema);
  
const app = express();
  
app.set("view engine", "ejs");
  
app.use(bodyParser.urlencoded({
    extended: true
}));
  
app.use(express.static(__dirname + '/public'));
  
app.get("/contact", function(req, res){
    res.render("contact");
});
  
app.post("/contact", function (req, res) {
    console.log(req.body.email);
  const contact = new Contact({
      email: req.body.email,
      query: req.body.query,
  });
  contact.save(function (err) {
      if (err) {
          throw err;
      } else {
        res.render("contact");
      }
  });
});
  
app.listen(3000, function(){
    console.log("App is running on Port 3000");
});

Producción:

 

Publicación traducida automáticamente

Artículo escrito por devaadi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *