mangoest is een raamwerk dat de interactie met MongoDB vergemakkelijkt. Eigenlijk wil je eigenlijk nooit alle validatie, casting en logische boilerplate alleen doen, dus waarom het wiel opnieuw uitvinden.
En aangezien je een beginner bent, wees niet bang voor frameworks. Er zijn veel handige frameworks voor veel gebieden van backend en frontend om het leven voor u gemakkelijker te maken.
Het artikel dat je hebt gedeeld spreekt voor zich, maar ik zal alleen het databasegedeelte samenvatten voor jou (ik zal niet diep ingaan op je code, geen ezelswerk. de rest is aan jou):
1) Installeer allereerst mangoest.
npm install mongoose
Het artikel heeft --save
wat niet meer hoeft toe te voegen, zoals "npm install
slaat alle opgegeven pakketten standaard op in afhankelijkheden."(ref.
)
2) om mangoest te kunnen openen en gebruiken , je moet het importeren, op een knooppuntmanier, dat wil zeggen require()
.
const express = require(‘express’)
const mongoose = require(“mongoose”);
const bodyParser = require(‘body-parser’);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
En wat is body-parser daar voor?
Als je te maken hebt met database in express, zul je vroeg of laat fouten tegenkomen zoals deze
.
en de reden waarom we er toch een nodig hebben, wordt het best uitgelegd in dit antwoord .
Ook recente versies van express hebben nu een eigen body-parser, dus je kunt app.use(express.json())
gebruiken in plaats van app.use(bodyParser.json())
.
Belangrijk: body-parser moet vóór je routes staan.
3) gebruik mongoose.connect(url)
.
url
argument vind je in je MongoDB Atlas . :
Locatie:tabblad clusters -> verbinden -> sluit uw applicatie aan -> driver node.js
Dat geeft je zoiets als dit:
mongodb+srv://<user>:<password>@,cluster>.mongodb.net/test?retryWrites=true&w=majority
Belangrijk: u gebruikt de gebruiker en het wachtwoord van de gebruiker die u op het tabblad Databasetoegang hebt gemaakt, niet uw eigen gebruiker en wachtwoord.
U kunt uw omgevingsvariabelen instellen om gevoelige en veranderlijke gegevens te beveiligen. Maar ik gebruik liever config.js
voor de eenvoud, en die zich meestal in de hoofdmap van app bevindt.
Niet alleen jij kunt ze beveiligen (zoals voor het gebruik van .gitignore
), maar u kunt ze ook gemakkelijk aanpassen omdat er variabelen zijn die van de ene omgeving naar de andere kunnen veranderen, waardoor ze op één plaats beschikbaar zijn en gemakkelijk te vinden zijn, in plaats van ernaar te zoeken dat ze overal in uw app kunnen veranderen.
Voor .env
bestandsbenadering, lees dit artikel
.
Belangrijk: voor het geval je je code in github of waar dan ook online wilt plaatsen, welke reden we dan ook config.js
gebruiken , vergeet niet dit bestand toe te voegen in .gitignore
om te voorkomen dat dergelijke gevoelige gegevens worden gelekt en online aan anderen worden blootgesteld.
in config.js
u kunt dit doen:
exports.username = 'your user';
exports.pass = 'your pass';
exports.myCluster = 'your cluster's name';
Importeer ze dan zo:
const { username, pass, myCluster } = require('./config');
<- het pad kan voor jou anders zijn!
Tip: U kunt back-tick (` `
) om die variabelen gemakkelijk in te voegen voor const url
, via interpolatie .
Dat is:
const url = `mongodb+srv://${username}:${password},${myCluster}.mongodb.net/test?retryWrites=true&w=majority`
Belangrijk: zorg ervoor dat u op de witte lijst zet uw IP van MongoDB-kant (atlas), anders krijgt u een verbindingsfout. Onder beveiliging :Netwerktoegang -> IP-witte lijst
Je zou 0.0.0.0/0
. kunnen gebruiken om alle IP's op de witte lijst te zetten.
Ook bij gebruik van VPN , uw IP zal ook veranderen.
4) last but not least , nadat u verbinding heeft gemaakt met de database, moet u uw schema . definiëren :
const moviesSchema = new mongoose.Schema({
title: String,
year: Number,
rating: Number
});
En
const Movies = mongoose.model(“Movies”, moviesSchema);
Tip: Een veelgemaakte fout die veel nieuwkomers maken, is dat ze vergeten zijn new
. te gebruiken :new mongoose.Schema({...})
Als u uw model in een apart bestand wilt maken (wat de beste methode is), moet u uw const Movies
aanpassen dus:
module.exports = mongoose.model(“Movies”, moviesSchema);
Vergeet niet om const mongoose = require('mongoose');
. toe te voegen in dat aparte js-modelbestand.
En waar u dit model ook wilt gebruiken, u importeert zo:
const Movies= require('../models/movies');
(het pad kan verschillen voor uw app)
De rest, mijn vriend, is aan jou. Wat u met uw database wilt doen en hoe u deze moet gebruiken.
Opmerking voor anderen:ik heb hier zoveel tijd en aandacht aan besteed toen ik dit aan het schrijven was. Als je iets verkeerd ziet, of denkt dat je iets kunt toevoegen, voel je vrij om mijn antwoord aan te passen en te verbeteren.