sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo guardar mis datos en mongoDB usando expressjs?

mangosta es un marco que facilita la interacción con MongoDB. En realidad, básicamente nunca querrás hacer toda la validación, el casting y la lógica repetitiva por tu cuenta, así que ¿por qué reinventar la rueda?
Y como eres un principiante, no tengas miedo de los marcos. Hay muchos marcos útiles para muchas áreas de backend y frontend para facilitarle la vida.

El artículo que compartió se explica por sí mismo, pero resumiré solo la parte de la base de datos para usted (no profundizaré en su código, no hay trabajo de burro. el resto depende de usted):

1) En primer lugar, instale mongoose.

npm install mongoose

El artículo tiene --save que ya no es necesario agregar, como "npm install guarda los paquetes especificados en las dependencias de forma predeterminada."(ref. )

2) para poder acceder y usar mongoose , debe importarlo, en forma de nodo, es decir require() .

const express = require(‘express’)
const mongoose = require(“mongoose”);
const bodyParser = require(‘body-parser’);  

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true })); 

¿Y qué es body-parser? allí para?
Al tratar con la base de datos en Express, tarde o temprano encontrará errores como este .
y la razón por la que necesitamos uno después de todo se explica mejor en esta respuesta .
Además, las versiones recientes de express ahora tienen su propio analizador de cuerpo, por lo que puede usar app.use(express.json()) en lugar de app.use(bodyParser.json()) .
Importante: body-parser debe estar antes de tus rutas.

3) usa mongoose.connect(url) .

url argumento es lo que encuentra en su MongoDB Atlas . :

Ubicación:pestaña de clústeres -> conectar -> conectar su aplicación -> controlador node.js

Lo que te da algo como esto:

mongodb+srv://<user>:<password>@,cluster>.mongodb.net/test?retryWrites=true&w=majority

Importante: utiliza el usuario y la contraseña del usuario que creó en la pestaña Acceso a la base de datos, no su propio usuario y contraseña.

Puede configurar sus variables de entorno para proteger datos confidenciales y modificables. Pero prefiero usar config.js por simplicidad, y que normalmente reside en la raíz de app.

No solo puede protegerlos (como usar .gitignore ), pero también modifíquelos fácilmente, ya que hay variables que pueden cambiar de un entorno a otro, haciéndolos disponibles en un solo lugar y fáciles de encontrar, en lugar de buscarlos para cambiar en toda su aplicación.

Para .env enfoque de archivo, lea este artículo .

Importante: en caso de que desee poner su código en github o en cualquier lugar en línea, ¿cuál es la razón por la que usamos config.js? , no olvide agregar este archivo en .gitignore para evitar que estos datos confidenciales se filtren y se expongan a otros en línea.

en config.js puedes hacerlo:

exports.username = 'your user';
exports.pass = 'your pass';
exports.myCluster = 'your cluster's name';

Luego impórtelos así:

const { username, pass, myCluster } = require('./config'); <- ¡el camino puede ser diferente para ti!

Consejo: Puede usar la marca de retroceso (` ` ) para insertar fácilmente esas variables para const url , mediante interpolación .

Es decir:

const url = `mongodb+srv://${username}:${password},${myCluster}.mongodb.net/test?retryWrites=true&w=majority`

Importante: asegúrese de lista blanca tu IP desde el lado de MongoDB (atlas), de lo contrario obtendrá un error de conexión. Bajo seguridad :Acceso a la red -> Lista blanca de direcciones IP
Podrías usar 0.0.0.0/0 para incluir en la lista blanca todas las direcciones IP.
Además, al usar VPN , tu IP también cambiará.

4) por último pero no menos importante , después de conectarse a la base de datos, debe definir su esquema :

const moviesSchema = new mongoose.Schema({
title: String,
year: Number,
rating: Number
});

Y

const Movies = mongoose.model(“Movies”, moviesSchema);

Consejo: Un error común que cometen muchos novatos es que se olvidaron de usar new :
new mongoose.Schema({...})

Si desea crear su modelo en un archivo separado (que es la mejor práctica), deberá modificar sus const Movies entonces:

module.exports = mongoose.model(“Movies”, moviesSchema);

No olvide agregar const mongoose = require('mongoose'); en ese archivo de modelo js separado.

Y en cualquier lugar que desee usar este modelo, importe así:

const Movies= require('../models/movies'); (la ruta puede ser diferente para su aplicación)

El resto, mi amigo, depende de ti. Qué quiere hacer con su base de datos y cómo usarla.

Nota para los demás:dediqué mucho tiempo y mente a esto mientras escribía esto. Por favor, si ve algo incorrecto o cree que puede agregar algo, siéntase libre de editar y mejorar mi respuesta.