Javascript 如何将路由与节点js中的控制器链接?
我用server.js编写了一些API。我想使MVC结构像我想在routes目录中有所有路由,在controller中有API一样。我如何用膝关节炎和骨关节造这种结构。我是新来的。我试着做点什么,但它不起作用。如何将所有这些链接到server.js。因此,当我启动服务器时,API应该可以工作。希望你能理解我的问题。我尝试了很多事情,但都没有成功 控制器:apiController.jsJavascript 如何将路由与节点js中的控制器链接?,javascript,node.js,model-view-controller,koa,koa2,Javascript,Node.js,Model View Controller,Koa,Koa2,我用server.js编写了一些API。我想使MVC结构像我想在routes目录中有所有路由,在controller中有API一样。我如何用膝关节炎和骨关节造这种结构。我是新来的。我试着做点什么,但它不起作用。如何将所有这些链接到server.js。因此,当我启动服务器时,API应该可以工作。希望你能理解我的问题。我尝试了很多事情,但都没有成功 控制器:apiController.js const Router = require('koa-router'); const router = ne
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);
Server.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');
});
现场演示:
server.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
- user.js
- 控制器
- user.js
- 模型
- user.js
- 路线
module.exports = (app) => {
// user-routes api file.
require("./user")(app);
};
路由器.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;
获取500错误,因为require在server.js文件中不起作用,并且没有指向路由。您可以编辑我的代码吗?这样我才能更好地理解。只需更改require('./modules/user management/routes')(app)而不是require('/modules/user management/routes')(app)