MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Създаване на администраторска зона за пет минути с AdminBro, express, mongoDB, mongoose

Има начин да настроите административна зона и да започнете да работите с вашите данни за пет минути, без всъщност да изграждате всички администраторски маршрути и контролери. Ето как...

Всичко, което трябва да имаме, са модели и след това можем да използваме пакета AdminBro, за да стартираме напълно работещото табло за управление, базирано на нищо друго освен нашите модели.

Първо трябва да настроим експресния сървър.

mkdir server 
cd server 
npm init

Нека инсталираме Express и Admin Bro пакети:

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

Сега трябва да създадем папка за моделите

mkdir models

И файлове за моделите, да кажем, че ще направим модел за продуктите и категориите

touch models/products.js models/categories.js

Нека дефинираме схема за продукта в 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);

и за категориите в 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);

Сега нека направим основния сървърен файл index.js вътре в нашия server папка:

touch index.js

и добавете този основен barebone код към него:

// 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} 🚀`));

Сега можем да стартираме нашия сървър с nodemon и вижте, че е стартиран и работи, свързан с локалната база данни mongo.

Сега последната стъпка - трябва да импортираме нашите модели и Admin Bro ще направи останалото.

Добавете това във вашия index.js файл след свързване към 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

Както можете да видите след импортиране на Admin Bro, ние се нуждаем от нашите модели:

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

и след това ги предава (Categories и Products ) в този пример в Admin Bro):

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

плюс задаване на пътя за таблото за управление в rootPath: '/admin'

Сега, ако отворим нашия сървър на определения порт (5050 в този пример) и ще отидем до URL адреса на администратора (/admin ) в този пример ще видим великолепното табло, готово за използване с нашите данни.

Демо репо на GitHub


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Използването на буферирани данни в етапа на сортиране при препълване надвишава вътрешното ограничение

  2. Mongoid Group By или MongoDb Group by в релсите

  3. как да $project ObjectId към низова стойност в mongodb агрегат?

  4. Как да приложим ограничения в MongoDB?

  5. Mongodb агрегиращ тръбопровод как да ограничите групово натискане