MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come salvare i miei dati su mongoDB usando expressjs?

mangusta è un framework che facilita l'interazione con MongoDB. In realtà, in pratica non vuoi mai fare tutta la convalida, il casting e la logica standard da solo, quindi perché reinventare la ruota.
E dato che sei un principiante, non aver paura dei framework. Esistono molti framework utili per molte aree di back-end e front-end per semplificarti la vita.

L'articolo che hai condiviso è autoesplicativo, ma riassumerò solo la parte del database per te (non approfondirò il tuo codice, niente lavoro da somaro. il resto dipende da te):

1) Prima di tutto installa Mangusta.

npm install mongoose

L'articolo ha --save che non è più necessario aggiungere, come "npm install salva tutti i pacchetti specificati nelle dipendenze per impostazione predefinita."(ref. )

2) per poter accedere e utilizzare mangusta , devi importarlo, in modalità nodo, ovvero require() .

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

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

E cos'è il parser del corpo lì per?
Quando hai a che fare con il database in Express, prima o poi ti imbatterai in errori come questo .
e il motivo per cui ne abbiamo bisogno è spiegato meglio in questa risposta .
Inoltre, le versioni recenti di express hanno ora il proprio parser del corpo, quindi puoi usare app.use(express.json()) invece di app.use(bodyParser.json()) .
Importante: body-parser deve essere prima dei tuoi percorsi.

3) usa mongoose.connect(url) .

url argomento è ciò che trovi nel tuo Atlante MongoDB . :

Posizione:scheda cluster -> connetti -> connetti la tua applicazione -> driver node.js

Il che ti dà qualcosa del genere:

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

Importante: utilizzi l'utente e la password dell'utente che hai creato nella scheda Accesso al database, non il tuo utente e la tua password.

È possibile impostare le variabili di ambiente per proteggere i dati sensibili e modificabili. Ma preferisco usare config.js per semplicità e che di solito risiede nella radice dell'app.

Non solo puoi proteggerli (come per usare .gitignore ), ma anche modificarli facilmente poiché esistono variabili che potrebbero cambiare da un ambiente all'altro, rendendole disponibili in un unico posto e facili da trovare, invece di cercarle per cambiare in tutta l'app.

Per .env approccio ai file, leggi questo articolo .

Importante: nel caso in cui desideri inserire il tuo codice in github o ovunque online, motivo per cui utilizziamo config.js , non dimenticare di aggiungere questo file in .gitignore per evitare che tali dati sensibili vengano divulgati ed esposti ad altri online.

in config.js puoi farlo:

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

Quindi importali così:

const { username, pass, myCluster } = require('./config'); <- il percorso potrebbe essere diverso per te!

Suggerimento: Puoi usare il backtick (` ` ) per inserire facilmente quelle variabili per const url , tramite interpolazione .

Cioè:

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

Importante: assicurati di inserire nella whitelist il tuo IP dal lato MongoDB (atlante), altrimenti otterrai un errore di connessione. Sotto sicurezza :Accesso alla rete -> Lista bianca IP
Puoi usare 0.0.0.0/0 per autorizzare tutti gli IP.
Inoltre, quando si utilizza la VPN , cambierà anche il tuo IP.

4) ultimo ma non meno importante , dopo esserti connesso al database, devi definire il tuo schema :

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

E

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

Suggerimento: Un errore comune a molti neofiti è che si sono dimenticati di usare new :
new mongoose.Schema({...})

Se vuoi creare il tuo modello in un file separato (che è la migliore pratica), dovrai modificare i tuoi const Movies quindi:

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

Non dimenticare di aggiungere const mongoose = require('mongoose'); in quel file modello js separato.

E ovunque tu voglia utilizzare questo modello, importi così:

const Movies= require('../models/movies'); (il percorso potrebbe essere diverso per la tua app)

Il resto, amico mio, dipende da te. Cosa vuoi fare con il tuo database e come usarlo.

Nota per gli altri:ho dedicato così tanto tempo e mente a questo mentre lo scrivevo. Per favore, se vedi qualcosa di sbagliato o pensi di poter aggiungere qualcosa, sentiti libero di modificare e migliorare la mia risposta.