sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik mijn gegevens op mongoDB opslaan met expressjs?

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.



  1. MongoDB geneste documentvalidatie voor subdocumenten

  2. Sessiestatus met Azure Redis Cache werkt niet op meerdere instanties

  3. ReplicaSetConnection van pymongo gebruiken:soms wordt IndexError:niet zo'n item voor Cursor

  4. Hoe krijg ik de _id van het recentelijk ingevoegde document na een invoeging met mongo csharp?