MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment sauvegarder mes données sur mongoDB en utilisant expressjs ?

mangouste est un framework qui facilite l'interaction avec MongoDB. En fait, vous ne voulez jamais faire toute la validation, le casting et le passe-partout logique par vous-même, alors pourquoi réinventer la roue.
Et puisque vous êtes débutant, n'ayez pas peur des frameworks. Il existe de nombreux frameworks utiles pour de nombreux domaines du backend et du frontend pour vous faciliter la vie.

L'article que vous avez partagé est explicite, mais je ne résumerai que la partie base de données pour vous (je ne vais pas approfondir votre code, pas de travail d'âne. le reste dépend de vous):

1) Tout d'abord, installez la mangouste.

npm install mongoose

L'article a --save qu'il n'est plus nécessaire d'ajouter, comme "npm install enregistre tous les packages spécifiés dans les dépendances par défaut."(ref. )

2) pour pouvoir accéder et utiliser mongoose , vous devez l'importer, en nœud, c'est-à-dire require() .

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

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

Et qu'est-ce que body-parser là pour ?
Lorsque vous traitez avec une base de données dans Express, vous rencontrerez tôt ou tard des erreurs telles que celui-ci .
et la raison pour laquelle nous en avons besoin après tout est mieux expliquée dans cette réponse .
De plus, les versions récentes d'express ont désormais leur propre analyseur de corps, vous pouvez donc utiliser app.use(express.json()) au lieu de app.use(bodyParser.json()) .
Important : body-parser doit être avant vos routes.

3) utilisez mongoose.connect(url) .

url l'argument est ce que vous trouvez dans votre Atlas MongoDB . :

Emplacement :onglet clusters -> connecter -> connecter votre application -> driver node.js

Ce qui vous donne, quelque chose comme ça :

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

Important : vous utilisez l'utilisateur et le mot de passe de l'utilisateur que vous avez créé dans l'onglet Accès à la base de données, et non votre propre utilisateur et mot de passe.

Vous pouvez configurer vos variables d'environnement pour sécuriser les données sensibles et modifiables. Mais je préfère utiliser config.js pour plus de simplicité, et qui réside généralement à la racine de app.

Non seulement vous pouvez les sécuriser (comme pour utiliser .gitignore ), mais aussi les modifier facilement car il existe des variables qui peuvent changer d'un environnement à un autre, les rendant disponibles en un seul endroit et faciles à trouver, au lieu de les chercher à changer partout dans votre application.

Pour .env approche de fichier, lisez cet article .

Important : au cas où vous voudriez mettre votre code dans github ou n'importe où en ligne, quelle est la raison pour laquelle nous utilisons config.js , n'oubliez pas d'ajouter ce fichier dans .gitignore pour éviter que ces données sensibles ne soient divulguées et exposées à d'autres en ligne.

dans config.js vous pouvez le faire :

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

Puis importez-les ainsi :

const { username, pass, myCluster } = require('./config'); <- le chemin pourrait être différent pour vous !

Astuce : Vous pouvez utiliser le back-tick (` ` ) pour insérer facilement ces variables pour const url , par interpolation .

C'est-à-dire :

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

Important : assurez-vous de liste blanche votre IP du côté MongoDB (atlas), sinon vous obtiendrez une erreur de connexion. Sous sécurité  :Accès au réseau -> Liste blanche IP
Vous pouvez utiliser 0.0.0.0/0 pour ajouter toutes les adresses IP à la liste blanche.
Aussi, lors de l'utilisation de VPN , votre IP changera également.

4) le dernier mais non le moindre , après vous être connecté à la base de données, vous devez définir votre schéma :

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

Et

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

Astuce : Une erreur courante que font de nombreux débutants est qu'ils ont oublié d'utiliser new :
new mongoose.Schema({...})

Si vous souhaitez créer votre modèle dans un fichier séparé (ce qui est la meilleure pratique), vous devrez modifier vos const Movies donc :

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

N'oubliez pas d'ajouter const mongoose = require('mongoose'); dans ce fichier de modèle js séparé.

Et partout où vous voulez utiliser ce modèle, vous importez donc :

const Movies= require('../models/movies'); (le chemin peut être différent pour votre application)

Le reste, mon ami, dépend de vous. Ce que vous voulez faire de votre base de données et comment l'utiliser.

Note aux autres :j'y ai consacré tellement de temps et d'esprit en écrivant ceci. S'il vous plaît, si vous voyez quelque chose qui ne va pas, ou pensez que vous pouvez ajouter quelque chose, n'hésitez pas à modifier et à améliorer ma réponse.