Szukaj…


Wprowadzenie

MongoDB jest jedną z najpopularniejszych baz danych NoSQL, dzięki pomocy stosu MEAN. Interfejs z bazą danych Mongo z aplikacji Express jest szybki i łatwy, gdy zrozumiesz trochę nieporadną składnię zapytań. Użyjemy Mongoose, aby nam pomóc.

Uwagi

Więcej informacji można znaleźć tutaj: http://mongoosejs.com/docs/guide.html

Instalowanie MongoDB

npm install --save mongodb
npm install --save mongoose //A simple wrapper for ease of development

W pliku serwera (zwykle o nazwie index.js lub server.js)

const express = require('express');
const mongodb = require('mongodb');
const mongoose = require('mongoose');
const mongoConnectString = 'http://localhost/database name';

mongoose.connect(mongoConnectString, (err) => {
  if (err) {
    console.log('Could not connect to the database');
  }
});

Tworzenie modelu mangusty

const Schema = mongoose.Schema;
const ObjectId = Schema.Types.ObjectId;

const Article = new Schema({
  title: {
    type: String,
    unique: true,
    required: [true, 'Article must have title']
  },
  author: {
    type: ObjectId,
    ref: 'User'
  }
});

module.exports = mongoose.model('Article, Article);

Przeanalizujmy to. MongoDB i Mongoose używają JSON (właściwie BSON, ale tutaj nie ma to znaczenia) jako formatu danych. Na górze ustawiłem kilka zmiennych, aby ograniczyć pisanie.

Tworzę new Schema i przypisuję go do stałej. Jest to prosty JSON, a każdy atrybut jest innym obiektem z właściwościami, które pomagają wymuszać bardziej spójny schemat. Opcja Unique wymusza wstawianie nowych instancji do bazy danych, aby były oczywiście unikalne. Jest to świetne, ponieważ zapobiega tworzeniu wielu kont w serwisie.

Wymagany jest inny, zadeklarowany jako tablica. Pierwszy element to wartość logiczna, a drugi komunikat o błędzie, jeśli wstawiana lub aktualizowana wartość nie istnieje.

Obiekty ObjectId są używane do relacji między modelami. Przykładami mogą być „Użytkownicy mają wiele komentarzy”. Zamiast ObjectId można użyć innych atrybutów. Ciągi takie jak nazwa użytkownika to jeden przykład.

Wreszcie, eksportowanie modelu do użytku z trasami API zapewnia dostęp do schematu.

Sprawdzanie bazy danych Mongo

Proste żądanie GET. Załóżmy, że model z powyższego przykładu znajduje się w pliku ./db/models/Article.js .

const express = require('express');
const Articles = require('./db/models/Article');

module.exports = function (app) {
  const routes = express.Router();
  
  routes.get('/articles', (req, res) => {
    Articles.find().limit(5).lean().exec((err, doc) => {
      if (doc.length > 0) {
        res.send({ data: doc });
      } else {
        res.send({ success: false, message: 'No documents retrieved' });
      }
    });
  });

app.use('/api', routes);
};

Możemy teraz uzyskać dane z naszej bazy danych, wysyłając żądanie HTTP do tego punktu końcowego. Kilka kluczowych rzeczy:

  1. Limit działa dokładnie tak, jak wygląda. Odzyskuję tylko 5 dokumentów.
  2. Lean usuwa niektóre elementy z surowego BSON, zmniejszając złożoność i koszty ogólne. Nie wymagane. Ale przydatne.
  3. Używając find zamiast findOne , potwierdź, że doc.length Jest większa niż 0. Dzieje się tak, ponieważ find zawsze zwraca tablicę, więc pusta tablica nie obsłuży twojego błędu, chyba że zostanie sprawdzona pod kątem długości
  4. Osobiście lubię wysyłać komunikat o błędzie w tym formacie. Zmień go w zależności od potrzeb. To samo dotyczy zwróconego dokumentu.
  5. Kod w tym przykładzie został napisany przy założeniu, że umieściłeś go w innym pliku, a nie bezpośrednio na serwerze ekspresowym. Aby wywołać to na serwerze, dołącz następujące wiersze do kodu serwera:
const app = express();
require('./path/to/this/file')(app) // 


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow