Nastavení MongoDB v Deno

Deno je jednoduchý a bezpečný runtime pro JavaScript, který ve výchozím nastavení podporuje a konfiguruje TypeScript. MongoDB je multiplatformní databázový program orientovaný na dokumenty, který je široce používán vývojáři. V tomto článku se naučíme, jak integrovat MongoDB do naší aplikace Deno.

Předpoklady

  • Znalost TypeScript
  • VS Code nebo jakýkoli editor kódu nainstalovaný na vašem vývojovém počítači.
  • Základní znalost MongoDB.
  • POSTMAN nainstalován na místním počítači.

Než začneme, ujistěte se, že máte na svém místním počítači nainstalovaný Deno. Pokud používáte Mac a ještě jej nemáte nainstalovaný, otevřete terminál a spusťte tento příkaz:

brew install deno

Pokud používáte počítač se systémem Windows, můžete jej nainstalovat spuštěním tohoto příkazu na vašem terminálu:

iwr https://deno.land/x/install/install.ps1 -useb | iex

Nebo, pokud máte nainstalovanou Chocolatey, můžete spustit:

choco install deno

Začínáme

Začneme vytvořením server.js soubor a poté nastavte náš server Deno. Protože neexistuje žádný package.json jako máme v Node.js, Deno používá odkaz na moduly pomocí URL nebo cest k souboru.

import { Application, Router } from "https://deno.land/x/oak/mod.ts";
const app = new Application();
const router = new Router();
const PORT = 3000;
router
  .get("/", (ctx) => {
    ctx.response.body = "This is the home route";
  });
app.use(router.routes());
app.use(router.allowedMethods());
app.listen({ port: PORT });

Pro provoz našeho serveru používáme Oak. Oak je middlewarový framework Deno pro HTTP servery a zahrnuje také middleware routeru.

Nyní můžeme spustit deno run --allow-net server.ts na našem terminálu, aby obsluhoval naši aplikaci. Kvůli zabezpečení společnosti Deno musíme přidat --allow-net provozovat server. Aplikaci můžeme vyhledat v našem prohlížeči na localhost:8000 .

Nyní, když je náš server v provozu, můžeme začít nastavovat MongoDB v naší aplikaci. Vytvořte db.js soubor, kde nastavíme naši konfiguraci DB:

// import the package from url
import { init, MongoClient } from "https://deno.land/x/[email protected]/mod.ts";
// Intialize the plugin
await init();
// Create client
const client = new MongoClient();
// Connect to mongodb
client.connectWithUri("mongodb://localhost:27017");
// Give your database a name
const dbname: string = "denoMongoApp";
const db = client.database(dbname);
// Declare the mongodb collections here. Here we are using only one collection (i.e user).
// Defining schema interface
interface UserSchema {
  _id: { $oid: string };
  name: string;
  email: string;
  phone: string;
}
const User = db.collection<UserSchema>("user");
export { db, User };

Zde naimportujeme plugin a následně jej inicializujeme. Vytvoříme instanci mongoClient a poté jej připojte k MongoDB. Nastavili jsme User kolekce, kterou použijeme k testování naší konfigurace Mongo. Také definujeme rozhraní TypeScript pro model MongoDB, které bude mít jméno, e-mail, telefon a vygenerované Mongo ID.

Nyní, když je toto nastaveno, vytvoříme jednoduchou aplikaci CRUD, abychom to otestovali. Aby byla naše aplikace škálovatelnější, musíme vytvořit routes.ts a controller.ts soubor. Naše routes.ts soubor bude zpracovávat naše trasy a controller.ts soubor zvládne naši MongoDB logiku.

Naše routes.ts soubor by měl vypadat takto:

import { Router } from "https://deno.land/x/oak/mod.ts";
import { getUsers, createUser } from "./controller.ts";
const router = new Router();
router
  .get("/", (ctx) => {
    ctx.response.body = "This is the home route";
  })
  .get("/get-users", getUsers)
  .post("/create-user", createUser);
export default router;

S touto novou konfigurací musíme upravit naše server.ts soubor do tohoto:

import { Application } from "https://deno.land/x/oak/mod.ts";
const app = new Application();
import router from "./routes.ts";
const PORT: number = 3000;
//
app.use(router.routes());
app.use(router.allowedMethods());
app.listen({ port: PORT });

Nyní potřebujeme definovat naše metody směrování, které jsme zavolali v router.ts soubor. Začneme vytvořením getUser metoda. Pamatujte, že musíme přinést instanci naší databáze, kterou jsme vytvořili v db.ts soubor:

import { User } from "./db.ts";

let getUsers = async (ctx: any) => {
  try {
    const data: any = await User.find();
    ctx.response.body = { "status": true, data: data };
    ctx.response.status = 200;
  } catch (err) {
    ctx.response.body = { status: false, data: null };
    ctx.response.status = 500;
    console.log(err);
  }
};

Nyní můžeme zavolat get-user koncový bod, který ve výchozím nastavení vrátí prázdné pole a stav 200 .

Stejnou techniku ​​použijeme k implementaci createUser metoda:

let createUser = async (ctx: any) => {
  try {
    let body: any = await ctx.request.body();
    console.log(await body.value);
    const { name, phone, email } = await body.value;
    const id = await User.insertOne({
      name: name,
      phone: phone,
      email: email,
    });
    ctx.response.body = { status: true, data: id };
    ctx.response.status = 201;
  } catch (err) {
    ctx.response.body = { status: false, data: null };
    ctx.response.status = 500;
    console.log(err);
  }
};

Nezapomeňte vždy počkat na body.value , protože se jedná o asynchronní požadavek. Pokud to neuděláte, vrátí pouze ID objektu.

Spusťte aplikaci:

Další skvělé články od LogRocket:

  • Nenechte si ujít ani okamžik s The Replay, kurátorským zpravodajem společnosti LogRocket
  • Použijte useEffect React k optimalizaci výkonu vaší aplikace
  • Přepínání mezi více verzemi Node
  • Naučte se animovat aplikaci React pomocí AnimXYZ
  • Prozkoumejte Tauri, nový rámec pro vytváření binárních souborů
  • Porovnejte NestJS vs. Express.js
  • Objevte oblíbené ORM používané v prostředí TypeScript
deno run --allow-all --unstable server.ts

--allow-all příznak povolí všechna oprávnění a deaktivuje zabezpečení společnosti Deno v naší aplikaci.

Testujeme naše koncové body

Pojďme do toho a otestujte naše koncové body pomocí POSTMAN. Zde je test pro získání uživatelů:

A zde je test pro vytvoření uživatele:

Závěr

Nastavení aplikace v Deno je celkem snadné a bezpečnější. Můžete použít jakoukoli databázi dle vašeho výběru, pokud pro ni existuje ovladač Deno. Vzhledem k tomu, že Deno nemá package.json ukládá všechny moduly do mezipaměti na našem místním počítači, což je mnohem rychlejší.