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: