簡體   English   中英

如何將路由與節點 js 中的控制器鏈接起來?

[英]How to link routes with controllers in node js?

我有一些用 server.js 編寫的 API。 我想制作 MVC 結構,就像我想讓路由目錄中的所有路由和控制器中的 API 一樣。 我如何用 koa 和 nodejs 制作這個結構。 我是 nodejs 的新手。 我嘗試做一些事情,但它不起作用。 如何將所有這些與 server.js 聯系起來。 這樣當我啟動服務器 API 時應該可以工作。 希望你明白我的問題。 我嘗試了很多東西,但對我不起作用。

控制器:apiController.js

const Router = require('koa-router');
const router = new Router();
const Koa = require('koa');
const app = new Koa();
var bodyParser = require('koa-bodyparser');


app.use(bodyParser({
    formidable: {uploadDir: './uploads'},
    multipart: true,
    urlencoded: false
}));

router.get('/api/get_all_users', async (ctx) => {
    const {rows} = await ctx.app.pool.query('SELECT * from users');
    ctx.body = {
        status: 200,
        message: "Data Found",
        data: rows,
    };
});

app.use(router.routes()).use(router.allowedMethods());

路由:api.js

const Router = require('koa-router');
const router = new Router();
const apiController = require('../controllers/ApiController');


router.get("/api/get_all_users", apiController);

服務器.js

const Koa = require('koa');
const app = new Koa();
const {Pool} = require('pg');


app.pool = new Pool({
    user: 'postgres',
    host: 'localhost',
    database: 'my_db',
    password: 'my_pass',
    port: 5432,
});

app.listen(3000, () => {
    console.log('Server running on port 3000');
});



現場演示:節點服務器

服務器.js

    const Koa = require('koa');
    const app = new Koa();
    const {Pool} = require('pg');


    app.pool = new Pool({
        user: 'postgres',
        host: 'localhost',
        database: 'my_db',
        password: 'my_pass',
        port: 5432,
    });

    // initialize user management module
    require('./modules/user-management/routes')(app)

    app.listen(3000, () => {
        console.log('Server running on port 3000');
    });

接下來,創建文件夾模塊和子文件夾,如下所示:

  • 用戶管理
    • 路線
      • 路由器.js
      • 用戶.js
    • 控制器
      • 用戶.js
    • 楷模
      • 用戶.js

模塊->用戶管理->路由->router.js

路由器.js

module.exports = (app) => {
    // user-routes api file.
    require("./user")(app);
};

模塊->用戶管理->路由->user.js

var UserControl = require("../controller/user");

module.exports = function (app) {
    const endpoint = "api";

    app.post(endpoint+"get_all_users",UserControl.getAllUsers);

};

模塊->用戶管理->控制器->user.js

var userControl = {

    getAllUser: async (req, res) => {
        try {
            // get functionality here..
            let users=[{'uid':1,'uname':'rahul'}]
            res.status(200).json(users);
        } catch (err) {
            res.status(500).json(err);
        }
    }
}
module.exports = userControl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM