Der er en måde at konfigurere et administratorområde og begynde at arbejde med dine data på fem minutter uden egentlig at bygge alle administratorruter og controllere. Her er hvordan...
Det eneste, vi skal have, er modeller, og så kan vi bruge AdminBro-pakken til at køre det fuldt fungerende dashboard baseret på intet andet end vores modeller.
Først skal vi konfigurere ekspresserveren.
mkdir server
cd server
npm init
Lad os installere ekspres- og Admin Bro-pakker:
npm i @adminjs/express @adminjs/mongoose adminjs express mongoose
Nu skal vi lave en mappe til modellerne
mkdir models
Og filer til modellerne, lad os sige, at vi laver en model for produkterne og kategorierne
touch models/products.js models/categories.js
Lad os definere et skema for produktet i 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);
og for kategorierne inde i 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);
Lad os nu lave hovedserverfilen index.js
inde i vores server
folder:
touch index.js
og tilføje denne grundlæggende barebone-kode til den:
// 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} 🚀`));
Nu kan vi køre vores server med nodemon
og se, at den er oppe og køre, forbundet til den lokale mongo-database.
Nu er det sidste trin - vi skal importere vores modeller, og Admin Bro vil klare resten.
Tilføj dette til din index.js
fil efter tilslutning til 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
Som du kan se efter import af Admin Bro kræver vi vores modeller:
const Categories = require('./models/categories'); // replace this for your model
const Products = require('./models/products'); // replace this for your model
og derefter sende dem (Categories
og Products
) i dette eksempel til Admin Bro):
const adminJS = new AdminJS({
resources: [Categories, Products],
rootPath: '/admin'
});
plus at sætte stien til dashboardet i rootPath: '/admin'
Hvis vi nu vil åbne vores server på den udpegede port (5050 i dette eksempel) og gå til admin url (/admin
) i dette eksempel vil vi se det herlige dashboard klar til at blive brugt med vores data.
Demo-repo på GitHub