我的项目(nodejs 后端)需要几个项目的基本 CRUD 功能:大陆、国家等。
我正在创建一个管理仪表板,我找到了用于创建仪表板的 admin-bro 插件。但由于这将在实时服务器中,我还需要创建身份验证。
如图所示,我已经在 routes.js 文件中拥有了我需要的所有 api
const express = require('express');
const router = express.Router();
const authController = require('../api/v1/controllers/auth.controller');
const counrtyController = require('../api/v1/controllers/country.controller')
const adminController = require('../api/v1/controllers/admin.controller');
// rendering admin pages
router.get('/Admin/Login', authController.renderLoginView);
router.get('/admin/Dashboard', adminController.renderDashboardView);
// API End Points for admin auth and new admin register and signout
router.post('/api/v1/auth/login', authController.login);
router.post('/api/v1/auth/register', authController.register);
router.post('/api/v1/auth/signout', authController.signout);
// API endpoints for countries(get all, get one, add one, delete one, edit one)
router.post('/api/v1/countries/addOne', counrtyController.addOne);
router.get('/api/v1/countries/getAll', counrtyController.listAll);
router.get('/api/v1/countries/:country_name', counrtyController.listOne);
router.put('/api/v1/countries/:country_name', counrtyController.updateOne);
router.delete('/api/v1/countries/:country_name',counrtyController.deleteOne);
module.exports = router;
这是我在 routes.js 文件中的一些 api
每个 api 调用一个特定的控制器,其中包含所有的逻辑。
现在我的问题是我想使用我现有的身份验证进入仪表板。我应该改变什么?
我将保留 api,因为将来我会将管理仪表板带到前端,我需要 get 方法来显示有关大陆/国家/地区的信息。
我现在可能会注释掉所有的 post/put/delete 方法
接下来我该怎么办?
这就是我在 admin.route.js 中的内容
const AdminBro = require('admin-bro');
const AdminBroExpress = require('@admin-bro/express');
const AdminBroMongoose = require('@admin-bro/mongoose');
const mongoose = require('mongoose');
AdminBro.registerAdapter(AdminBroMongoose);
const Country = require('../models/country.model');
const Continent = require('../models/continent.model');
const Visa = require('../models/visa.model');
const adminBro = new AdminBro({
resources: [
{
resource: Continent,
options: {
parent: {
name: 'Continent'
}
}
},
{
resource: Country,
options: {
parent: {
name: 'Country'
}
}
},
],
rootPath: '/admin',
})
const adminBroRouter = AdminBroExpress.buildRouter(adminBro)
module.exports = adminBroRouter;
在我的 index.js 里面:
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const dotenv = require('dotenv');
const bodyParser = require('body-parser');
const engine = require('./config/view.engine');
const router = require('./routes/routes');
const session = require('express-session');
const adminRouter = require('./routes/admin.route');
// Middlewares
app.use(session({secret: 'mysupersecret', saveUninitialized: true, resave: true}));
app.use(bodyParser.urlencoded({extended: true}))
app.use(express.json());
app.use('/', router);
// connect to db
dotenv.config();
mongoose.connect(
process.env.DB_CONNECT,
{
useUnifiedTopology: true,
useNewUrlParser: true
},
() => console.log("connected to db")
);
// use engine for views
engine(app);
app.use('/admin', adminRouter);
app.get("/", (req, res) =>{
res.send("This route wont return anything")
});
const PORT = process.env.PORT || 5000
app.listen(PORT, () => console.log("server up and running"));
一些小细节: 我的登录页面应该是 /Admin/Login 和仪表板应该是 /Admin/Dashboard