Er is een manier om een beheerdersgebied in te stellen en binnen vijf minuten aan de slag te gaan met uw gegevens zonder dat u alle beheerdersroutes en -controllers hoeft te bouwen. Hier is hoe...
Het enige dat we nodig hebben zijn modellen en dan kunnen we het AdminBro-pakket gebruiken om het volledig werkende dashboard uit te voeren op basis van niets anders dan onze modellen.
Eerst moeten we de express-server instellen.
mkdir server
cd server
npm init
Laten we express- en Admin Bro-pakketten installeren:
npm i @adminjs/express @adminjs/mongoose adminjs express mongoose
Nu moeten we een map voor de modellen maken
mkdir models
En bestanden voor de modellen, laten we zeggen dat we een model maken voor de producten en categorieën
touch models/products.js models/categories.js
Laten we het schema voor het product definiëren in 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);
en voor de categorieën binnen 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);
Laten we nu het hoofdserverbestand index.js
. maken binnen onze server
map:
touch index.js
en voeg deze basis barebone-code eraan toe:
// 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 kunnen we onze server draaien met nodemon
en zie dat het actief is, verbonden met de lokale mongo-database.
Nu de laatste stap -- we moeten onze modellen importeren en de Admin Bro doet de rest.
Voeg dit toe aan uw index.js
bestand na verbinding met de 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
Zoals je kunt zien na het importeren van Admin Bro hebben we onze modellen nodig:
const Categories = require('./models/categories'); // replace this for your model
const Products = require('./models/products'); // replace this for your model
en geef ze dan door (Categories
en Products
) in dit voorbeeld in Admin Bro):
const adminJS = new AdminJS({
resources: [Categories, Products],
rootPath: '/admin'
});
plus het pad voor het dashboard instellen in rootPath: '/admin'
Als we nu onze server openen op de aangewezen poort (5050 in dit voorbeeld) en naar de admin-url gaan (/admin
) in dit voorbeeld zullen we het glorieuze dashboard zien klaar om te worden gebruikt met onze gegevens.
Demo repo op GitHub