MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie speichere ich meine Daten in mongoDB mit expressjs?

Mungo ist ein Framework, das die Interaktion mit MongoDB erleichtert. Eigentlich wollen Sie die Validierung, das Casting und die Logikbausteine ​​nie alleine machen, also warum das Rad neu erfinden.
Und da Sie ein Anfänger sind, haben Sie keine Angst vor Frameworks. Für viele Bereiche des Backends und Frontends gibt es viele nützliche Frameworks, die Ihnen das Leben leichter machen.

Der von Ihnen geteilte Artikel ist selbsterklärend, aber ich werde nur den Datenbankteil zusammenfassen für Sie (ich werde nicht tief in Ihren Code einsteigen, keine Eselarbeit. Der Rest liegt bei Ihnen):

1) Installieren Sie zuerst Mongoose.

npm install mongoose

Der Artikel hat --save was nicht mehr hinzugefügt werden muss, da "npm install speichert standardmäßig alle angegebenen Pakete in Abhängigkeiten."(ref. ). )

2) um auf mongoose zugreifen und es verwenden zu können , müssen Sie es auf Knotenweise importieren, das heißt require() .

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

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

Und was ist body-parser warum?
Wenn Sie sich mit Datenbanken in Express beschäftigen, werden Sie früher oder später auf Fehler wie dieser .
und der Grund, warum wir doch einen brauchen, wird am besten in dieser Antwort .
Neuere Express-Versionen haben jetzt auch einen eigenen Body-Parser, sodass Sie app.use(express.json()) verwenden können statt app.use(bodyParser.json()) .
Wichtig: Body-Parser muss vor Ihren Routen stehen.

3) Verwenden Sie mongoose.connect(url) .

url Argument finden Sie in Ihrem MongoDB-Atlas . :

Speicherort:Registerkarte „Cluster“ -> „Verbinden“ -> „Verbinden Sie Ihre Anwendung“ -> „Treiber node.js“

Das ergibt etwa so:

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

Wichtig: Sie verwenden den Benutzer und das Passwort des Benutzers, den Sie auf der Registerkarte Datenbankzugriff erstellt haben, nicht Ihren eigenen Benutzer und Ihr eigenes Passwort.

Sie können Ihre Umgebungsvariablen einrichten, um vertrauliche und veränderbare Daten zu sichern. Aber ich bevorzuge die Verwendung von config.js der Einfachheit halber, und die sich normalerweise im Stammverzeichnis der App befindet.

Sie können sie nicht nur sichern (wie bei der Verwendung von .gitignore). ), sondern können sie auch einfach ändern, da es Variablen gibt, die sich von einer Umgebung zur anderen ändern können, sodass sie an einem Ort verfügbar und leicht zu finden sind, anstatt in Ihrer gesamten App nach Änderungen suchen zu müssen.

Für .env Dateiansatz, lesen Sie dieser Artikel .

Wichtig: falls Sie Ihren Code in Github oder irgendwo online einfügen möchten, was einer der Gründe ist, warum wir config.js verwenden , vergessen Sie nicht, diese Datei in .gitignore hinzuzufügen um zu vermeiden, dass solche sensiblen Daten durchsickern und anderen online zugänglich gemacht werden.

in config.js Sie können dies tun:

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

Importieren Sie sie dann so:

const { username, pass, myCluster } = require('./config'); <- der Weg könnte für Sie ein anderer sein!

Tipp: Sie können Backticks verwenden (` ` ), um diese Variablen einfach für const url einzufügen , durch Interpolation .

Das heißt:

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

Wichtig: Stellen Sie sicher, dass Sie auf die weiße Liste setzen Ihre IP von der MongoDB-Seite (Atlas), andernfalls erhalten Sie einen Verbindungsfehler. Unter Sicherheit :Netzwerkzugriff -> IP-Whitelist
Sie könnten 0.0.0.0/0 verwenden um alle IPs auf die Whitelist zu setzen.
Auch bei Verwendung von VPN , ändert sich auch Ihre IP-Adresse.

4) nicht zuletzt , müssen Sie nach dem Verbinden mit der Datenbank Ihr Schema definieren :

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

Und

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

Tipp: Ein häufiger Fehler, den viele Neulinge machen, ist, dass sie vergessen haben, new zu verwenden :
new mongoose.Schema({...})

Wenn Sie Ihr Modell in einer separaten Datei erstellen möchten (was die beste Vorgehensweise ist), müssen Sie Ihre const Movies ändern also:

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

Vergessen Sie nicht, const mongoose = require('mongoose'); hinzuzufügen in dieser separaten js-Modelldatei.

Und wo immer Sie dieses Modell verwenden möchten, importieren Sie es so:

const Movies= require('../models/movies'); (Der Pfad kann für Ihre App unterschiedlich sein)

Der Rest, mein Freund, liegt bei Ihnen. Was Sie mit Ihrer Datenbank machen möchten und wie Sie sie verwenden.

Hinweis für andere:Ich habe so viel Zeit und Gedanken darauf verwendet, während ich dies geschrieben habe. Bitte, wenn Sie etwas falsch sehen oder denken, dass Sie etwas hinzufügen können, können Sie meine Antwort gerne bearbeiten und verbessern.