sql >> Database >  >> NoSQL >> MongoDB

Een beheerdersgebied creëren in vijf minuten met AdminBro, express, mongoDB, mongoose

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


  1. Hoe kan ik een Meteor-verzameling sorteren op tijdstip van inbrengen?

  2. Alle veldnamen in een mongodb-verzameling krijgen?

  3. Haal alle velden en waarden van de hash-sleutel op met redis in node

  4. Toepassing kan niet worden gestart (poort 8080) niet beschikbaar