mangusta to framework, który ułatwia interakcję z MongoDB. Właściwie nigdy nie chcesz samodzielnie wykonywać całego schematu walidacji, rzutowania i logiki, więc po co wymyślać koło na nowo.
A skoro jesteś początkującym, nie bój się frameworków. Istnieje wiele przydatnych frameworków dla wielu obszarów backendu i frontendu, aby ułatwić Ci życie.
Artykuł, który udostępniłeś, nie wymaga wyjaśnień, ale podsumuję tylko część dotyczącą bazy danych dla ciebie (nie będę zagłębiać się w twój kod, żadna praca osła. reszta zależy od ciebie):
1) Przede wszystkim zainstaluj mangusty.
npm install mongoose
Artykuł ma --save
którego nie trzeba już dodawać, jako „npm install
domyślnie zapisuje określone pakiety w zależnościach."(ref.
)
2) aby mieć dostęp i korzystać z mangusty , musisz go zaimportować w sposób węzłowy, czyli require()
.
const express = require(‘express’)
const mongoose = require(“mongoose”);
const bodyParser = require(‘body-parser’);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
A co to jest parser ciała tam?
W przypadku ekspresowej bazy danych prędzej czy później natkniesz się na błędy, takie jak ten
.
A powód, dla którego go potrzebujemy, najlepiej wyjaśnimy w tej odpowiedzi .
Ponadto najnowsze wersje Express mają teraz własny parser ciała, więc możesz użyć app.use(express.json())
zamiast app.use(bodyParser.json())
.
Ważne: body-parser musi znajdować się przed Twoimi trasami.
3) użyj mongoose.connect(url)
.
url
argument jest tym, co znajdziesz w swoim Atlasie MongoDB . :
Lokalizacja:zakładka klastry -> połącz -> podłącz aplikację -> sterownik node.js
Co daje coś takiego:
mongodb+srv://<user>:<password>@,cluster>.mongodb.net/test?retryWrites=true&w=majority
Ważne: używasz użytkownika i hasła użytkownika utworzonego w zakładce Dostęp do bazy danych, a nie własnego użytkownika i hasła.
Możesz skonfigurować zmienne środowiskowe, aby zabezpieczyć poufne i zmienne dane. Ale wolę używać config.js
dla uproszczenia i który zwykle znajduje się w katalogu głównym aplikacji.
Nie tylko ty możesz je zabezpieczyć (jak przy użyciu .gitignore
), ale także łatwo je modyfikować, ponieważ istnieją zmienne, które mogą się zmieniać z jednego środowiska do drugiego, dzięki czemu są dostępne w jednym miejscu i łatwe do znalezienia, zamiast szukać ich zmiany w całej aplikacji.
Dla .env
podejście do plików, przeczytaj ten artykuł
.
Ważne: w przypadku, gdy chcesz umieścić swój kod na github lub w dowolnym miejscu online, z jakiego powodu używamy config.js
, nie zapomnij dodać tego pliku w .gitignore
aby uniknąć wycieku tak wrażliwych danych i ujawnienia ich innym osobom w Internecie.
w config.js
możesz to zrobić:
exports.username = 'your user';
exports.pass = 'your pass';
exports.myCluster = 'your cluster's name';
Następnie zaimportuj je tak:
const { username, pass, myCluster } = require('./config');
<- ścieżka może być dla Ciebie inna!
Wskazówka: Możesz użyć back-tick (` `
), aby łatwo wstawić te zmienne dla const url
, poprzez interpolację .
Czyli:
const url = `mongodb+srv://${username}:${password},${myCluster}.mongodb.net/test?retryWrites=true&w=majority`
Ważne: pamiętaj o dodaniu do białej listy Twój IP ze strony MongoDB (atlas), w przeciwnym razie pojawi się błąd połączenia. W ramach bezpieczeństwa :Dostęp do sieci -> Biała lista adresów IP
Możesz użyć 0.0.0.0/0
aby dodać wszystkie adresy IP do białej listy.
Również w przypadku korzystania z VPN , zmieni się również Twój adres IP.
4) ostatni, ale nie mniej ważny , po połączeniu się z bazą danych musisz zdefiniować swój schemat :
const moviesSchema = new mongoose.Schema({
title: String,
year: Number,
rating: Number
});
I
const Movies = mongoose.model(“Movies”, moviesSchema);
Wskazówka: Częstym błędem popełnianym przez wielu początkujących jest to, że zapomnieli użyć new
:new mongoose.Schema({...})
Jeśli chcesz utworzyć swój model w osobnym pliku (co jest najlepszą praktyką), będziesz musiał zmodyfikować swoje const Movies
więc:
module.exports = mongoose.model(“Movies”, moviesSchema);
Nie zapomnij dodać const mongoose = require('mongoose');
w tym oddzielnym pliku modelu js.
W każdym miejscu, w którym chcesz użyć tego modelu, zaimportuj tak:
const Movies= require('../models/movies');
(ścieżka może być inna dla Twojej aplikacji)
Reszta, mój przyjacielu, należy do ciebie. Co chcesz zrobić ze swoją bazą danych i jak z niej korzystać.
Uwaga dla innych:poświęciłem temu tyle czasu i uwagi, kiedy to pisałem. Proszę, jeśli zauważysz coś nie tak lub uważasz, że możesz coś dodać, edytuj i ulepsz moją odpowiedź.