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