Odkryj moc Mongoose i dowiedz się, jak możesz jej używać do zarządzania danymi w prostej aplikacji internetowej.

Next.js to wszechstronna platforma JavaScript z pełnym stosem, zbudowana na bazie React, obsługująca jego główne funkcje, takie jak JSX, komponenty i hooki. Niektóre z podstawowych funkcji Next.js obejmują routing oparty na plikach, CSS w JS i renderowanie po stronie serwera.

Jedną z istotnych możliwości Next.js jest jego zdolność do bezproblemowej integracji z różnymi technologiami zaplecza, takimi jak Mongoose, co pozwala na łatwe i wydajne zarządzanie danymi.

Dzięki Mongoose możesz łatwo zdefiniować wydajne API REST z aplikacji Next.js do przechowywania i pobierania danych z bazy danych MongoDB.

Next.js: kompleksowy framework JavaScript

W przeciwieństwie do React, Next.js jest uważany za platformę internetową z pełnym stosem, ponieważ zapewnia kompletne rozwiązanie do budowania aplikacji internetowych renderowanych po stronie serwera.

Dzieje się tak, ponieważ oferuje funkcje, które umożliwiają pracę zarówno na froncie, jak i na backendzie aplikacji z jednego katalogu projektu. Nie musisz koniecznie konfigurować oddzielnego folderu projektu zaplecza, aby zaimplementować funkcjonalność po stronie serwera, szczególnie w przypadku aplikacji na małą skalę.

instagram viewer

Jednak o ile Next.js obsługuje niektóre funkcje zaplecza, aby tworzyć duże aplikacje z pełnym stosem, warto połączyć go z dedykowanym frameworkiem zaplecza, takim jak Express.

Niektóre z podstawowych funkcji, które zapewniają Next.js jego pełne możliwości, obejmują:

  • Renderowanie po stronie serwera: Next.js zapewnia wbudowaną obsługę możliwości renderowania po stronie serwera. Zasadniczo oznacza to, że gdy klient wysyła żądania HTTP do serwera, serwer przetwarza żądania i odpowiada wymaganą treścią HTML dla każdej strony, która ma być renderowana w przeglądarce.
  • Routing: Next.js używa systemu routingu opartego na stronach do definiowania różnych tras i zarządzania nimi, obsługi danych wprowadzanych przez użytkowników i tworzenia dynamicznych stron bez konieczności polegania na bibliotekach innych firm. Ponadto skalowanie w górę jest łatwe, ponieważ dodawanie nowych tras jest tak proste, jak dodanie nowej strony, takiej jak about.js, do katalogu stron.
  • Punkty końcowe API: Next.js zapewnia wbudowaną obsługę funkcji po stronie serwera, które są używane do tworzenia punktów końcowych API, które zarządzają żądaniami HTTP i zwracanymi danymi. Ułatwia to tworzenie funkcji zaplecza bez konieczności konfigurowania oddzielnego serwera przy użyciu dedykowanej struktury zaplecza, takiej jak Express. Należy jednak pamiętać, że Next.js to przede wszystkim front-endowy framework sieciowy.

Skonfiguruj bazę danych MongoDB

Rozpocząć, skonfigurować bazę danych MongoDB. Alternatywnie możesz szybko uruchomić bazę danych MongoDB przez bezpłatną konfigurację klastra MongoDB w chmurze. Po skonfigurowaniu i uruchomieniu bazy danych skopiuj ciąg identyfikatora URI połączenia z bazą danych.

Możesz znaleźć kod tego projektu w this Repozytorium GitHub.

Skonfiguruj projekt Next.js

Utwórz katalog dla nowego projektu i płyta CD w tym:

projekt mkdir nextjs
projekt cd nextjs

Następnie zainstaluj Next.js:

npx utwórz następną aplikację nextjs-mongodb

Po zakończeniu procesu instalacji zainstaluj Mongoose jako zależność.

npm zainstaluj mangustę

Na koniec w katalogu głównym projektu utwórz nowy plik .env do przechowywania parametrów połączenia z bazą danych.

NEXT_PUBLIC_MONGO_URI = „łańcuch połączenia identyfikatora URI bazy danych”

Skonfiguruj połączenie z bazą danych

w źródło katalogu, utwórz nowy folder i nadaj mu nazwę narzędzia. W tym folderze utwórz nowy plik o nazwie dbConfig.js i dodaj do niego następujący kod:

import mangusta z'mangusta';

konst połącz Mongo = asynchroniczny () => mongoose.connect (process.env. NEXT_PUBLIC_MONGO_URI);

eksportdomyślny połącz Mongo;

Zdefiniuj modele danych

Modele danych definiują strukturę danych, które będą przechowywane, w tym typy danych i relacje między danymi.

MongoDB przechowuje dane w dokumentach podobnych do JSON, ponieważ jest to Baza danych NoSQL. Mongoose zapewnia sposób definiowania sposobu przechowywania danych klientów Next.js i uzyskiwania do nich dostępu z bazy danych.

W katalogu src utwórz nowy folder i nazwę w models. W tym folderze utwórz nowy plik o nazwie userModel.js, i dodaj poniższy kod:

import { Schemat, model, modele } z'mangusta';

konst schemat użytkownika = nowy Schemat({
nazwa: Strunowy,
e-mail: {
typ: Strunowy,
wymagany: PRAWDA,
unikalny: PRAWDA,
},
});

konst Użytkownik = modele. Użytkownik || Model('Użytkownik', schemat użytkownika);

eksportdomyślny Użytkownik;

Utwórz punkty końcowe interfejsu API

W przeciwieństwie do innych frameworków front-end, Next.js zapewnia wbudowaną obsługę zarządzania API. Upraszcza to proces tworzenia interfejsów API, ponieważ można je zdefiniować bezpośrednio w projekcie Next.js zamiast konfigurować osobny serwer.

Po zdefiniowaniu tras API w katalogu pages/api Next.js generuje punkty końcowe API dla każdego pliku w tym katalogu. Na przykład, jeśli utworzysz userV1/user.js, Next.js utworzy punkt końcowy dostępny pod adresem http://localhost: 3000/api/użytkownikV1/użytkownik.

W środku strony/api, utwórz nowy folder i nadaj mu nazwę userV1. W tym folderze utwórz nowy plik o nazwie użytkownik.jsi dodaj poniższy kod:

import połączMongo z„../../../narzędzia/konfiguracja bazy danych”;
import Użytkownik z„../../../modele/model użytkownika”;

/**
 * @param {import('Następny').NextApiRequest} wym
 * @param {import('Następny').NextApiResponse} res
 */
eksportdomyślnyasynchronicznyfunkcjonowaćAPI użytkownika(żądanie, rez) {
próbować {
konsola.dziennik(„ŁĄCZENIE Z MONGO”);
czekać na połącz Mongo();
konsola.dziennik(„POŁĄCZONY Z MONGO”);

Jeśli (wymagana metoda 'POST') {
konsola.dziennik(„TWORZENIE DOKUMENTU”);
konst utworzony użytkownik = czekać na User.create (req.body);
konsola.dziennik(„UTWORZONY DOKUMENT”);
res.json({utworzonyUżytkownik});
} w przeciwnym razieJeśli (wymagana metoda 'DOSTAWAĆ') {
konsola.dziennik(„POBIERANIE DOKUMENTÓW”);
konst pobrani użytkownicy = czekać na User.find({});
konsola.dziennik(„POBIERANE DOKUMENTY”);
res.json({ pobranych użytkowników});
} w przeciwnym razie {
rzucićnowyBłąd(`Nieobsługiwana metoda HTTP: ${wymagana metoda}`);
}
} złapać (błąd) {
konsola.log (błąd);
res.json({błąd});
}
}

Ten kod implementuje punkt końcowy API do przechowywania i pobierania danych użytkownika z bazy danych MongoDB. definiuje A API użytkownika funkcja, która przyjmuje dwa parametry: wymaganie I rez. Reprezentują one odpowiednio przychodzące żądanie HTTP i wychodzącą odpowiedź HTTP.

Wewnątrz funkcji kod łączy się z bazą danych MongoDB i sprawdza metodę HTTP przychodzącego żądania.

Jeśli metodą jest żądanie POST, kod tworzy nowy dokument użytkownika w bazie danych przy użyciu metody tworzyć metoda. I odwrotnie, jeśli jest to A DOSTAWAĆ żądanie, kod pobiera wszystkie dokumenty użytkownika z bazy danych.

Korzystanie z punktów końcowych interfejsu API

Dodaj poniższy kod do pliku strony/index.js plik:

  • Wykonaj żądanie POST do punktu końcowego interfejsu API, aby zapisać dane w bazie danych.
    import style z'@/styles/Home.module.css';
    import { stan użycia } z'reagować';

    eksportdomyślnyfunkcjonowaćDom() {
    konst [nazwa, setName] = useState('');
    konst [email, setEmail] = useState('');
    konst [ResultsUżytkownicy, setUsersResults] = useState([]);

    konst utwórz użytkownika = asynchroniczny () => {
    próbować {
    konst utworzony użytkownik = czekać na aportować(„/api/użytkownikV1/użytkownik”, {
    metoda: 'POST',
    nagłówki: {
    'Typ zawartości': „aplikacja/json”,
    },
    ciało: JSON.stringify({
    nazwa,
    e-mail,
    }),
    }).Następnie((rez) => res.json());
    konsola.dziennik(„UTWORZONY DOKUMENT”);

    zestawNazwa('');
    ustaw e-mail ('');

    konsola.log (utworzony użytkownik);
    } złapać (błąd) {
    konsola.log (błąd);
    }
    };

  • Zdefiniuj funkcję do pobierania danych użytkownika, wysyłając żądania HTTP do punktu końcowego GET.
    konst wyświetlUżytkownicy = asynchroniczny () => {
    próbować {
    konsola.dziennik(„POBIERANIE DOKUMENTÓW”);
    konst pobrani użytkownicy = czekać na aportować(„/api/użytkownikV1/użytkownik”).Następnie((rez) =>
    res.json()
    );
    konsola.dziennik(„POBIERANE DOKUMENTY”);

    setUsersResults (pobrani użytkownicy);
    konsola.log (wyniki użytkowników)

    } złapać (błąd) {
    konsola.log (błąd);
    }
    };
  • Na koniec wyrenderuj element formularza z polami do wprowadzania tekstu oraz wyślij i wyświetl przyciski danych użytkownika.
    powrót (
    <>




Na koniec śmiało uruchom serwer deweloperski, aby zaktualizować zmiany i przejść do niego http://localhost: 3000 w Twojej przeglądarce.

npm uruchom dev

Używanie Next.js w aplikacjach

Next.js to fantastyczna opcja do tworzenia fajnych aplikacji internetowych, niezależnie od tego, czy pracujesz nad projektem pobocznym, czy rozwiązaniem internetowym na dużą skalę. Oferuje szereg funkcji i możliwości usprawniających proces tworzenia wydajnych i skalowalnych produktów.

Chociaż jest to przede wszystkim solidna platforma po stronie klienta, możesz także wykorzystać jej możliwości po stronie serwera, aby szybko przyspieszyć usługę zaplecza.