sql >> Databáze >  >> NoSQL >> MongoDB

Vytvoření oblasti pro správu za pět minut pomocí AdminBro, express, mongoDB, mongoose

Existuje způsob, jak nastavit oblast pro správu a začít pracovat se svými daty za pět minut, aniž byste museli ve skutečnosti budovat všechny cesty pro správu a řadiče. Zde je postup...

Vše, co potřebujeme, jsou modely a pak můžeme použít balíček AdminBro ke spuštění plně funkčního dashboardu založeného na ničem jiném, než na našich modelech.

Nejprve musíme nastavit expresní server.

mkdir server 
cd server 
npm init

Pojďme nainstalovat expresní a Admin Bro balíčky:

npm i @adminjs/express @adminjs/mongoose adminjs express mongoose            

Nyní musíme vytvořit složku pro modely

mkdir models

A soubory pro modely, řekněme, že uděláme model pro produkty a kategorie

touch models/products.js models/categories.js

Pojďme definovat schéma pro produkt v models/products.js :

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const productsSchema = new Schema({
  product: {
    type: String,
    required: true,
    unique: true
  },
  price: {
    type: Number,
    required: true
  },
  categoryId: {
    type: Schema.Types.ObjectId, ref: 'categories',
    required: true
  },
});

module.exports = mongoose.model('products', productsSchema);

a pro kategorie v models/categories.js :

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const categoriesSchema = new Schema({
    category: {
        type: String,
        required: true,
        unique: true
    }
},
{strictQuery: false}
)
module.exports =  mongoose.model('categories', categoriesSchema);

Nyní udělejme hlavní soubor serveru index.js na našem server složka:

touch index.js

a přidejte do něj tento základní barebone kód:

// GENERAL CONFIG
const app = require('express')();
const port = process.env.PORT || 5050;

// CONNECTING TO DB
const mongoose = require('mongoose');
(async function () {
  try {
    await mongoose.connect('mongodb://127.0.0.1/ourDatabase');
    console.log('Your DB is running');
  } catch (error) {
    console.log('your DB is not running. Start it up!');
  }
})();

app.listen(port, () => console.log(`🚀 Server running on port ${port} 🚀`));

Nyní můžeme spustit náš server s nodemon a uvidíte, že je v provozu a je připojen k místní databázi mongo.

Nyní poslední krok -- musíme importovat naše modely a Admin Bro se postará o zbytek.

Přidejte to do svého index.js soubor po připojení k db:

// ADMIN BRO
const AdminJS = require('adminjs');
const AdminJSExpress = require('@adminjs/express')
// We have to tell AdminJS that we will manage mongoose resources with it
AdminJS.registerAdapter(require('@adminjs/mongoose'));
// Import all the project's models
const Categories = require('./models/categories'); // replace this for your model
const Products = require('./models/products'); // replace this for your model
// Pass configuration settings  and models to AdminJS
const adminJS = new AdminJS({
  resources: [Categories, Products],
  rootPath: '/admin'
});
// Build and use a router which will handle all AdminJS routes
const router = AdminJSExpress.buildRouter(adminJS);
app.use(adminJS.options.rootPath, router);
// END ADMIN BRO

Jak můžete vidět po importu Admin Bro, potřebujeme naše modely:

const Categories = require('./models/categories'); // replace this for your model
const Products = require('./models/products'); // replace this for your model

a poté je předat (Categories a Products ) v tomto příkladu do Admin Bro):

const adminJS = new AdminJS({
  resources: [Categories, Products],
  rootPath: '/admin'
});

plus nastavení cesty k řídicímu panelu v rootPath: '/admin'

Pokud nyní otevřeme náš server na určeném portu (v tomto příkladu 5050) a přejdeme na adresu URL správce (/admin ) v tomto příkladu uvidíme nádherný řídicí panel připravený k použití s ​​našimi daty.

Demo repo na GitHubu


  1. Django Redis Chyba neznámého příkazu 'BZPOPMIN'

  2. RedisClient LUA API

  3. Ukládejte informace o uživateli pomocí redis nebo mongodb

  4. Monitorování a zabezpečení MongoDB pomocí ClusterControl Advisors