javascript - 如何使用 Express 路由器通过 index.js 查找函数(GET、POST、...)?
问题描述
我想在 Express 中安装一个路由器。我遵循了一个很好的教程,但我的代码仍然找不到我的函数 get/users。
当我将它放在 index.js 上时,我的功能有效
index.js:
const express = require('express');
const app = express();
app.use(express.json());
const users = require('./api/user');
app.use('/users', users);
./api/user.js :
const {user, validate} = require('../models/user');
const mongoose = require('mongoose');
const express = require('express');
const router = express.Router();
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user:'root',
password: 'root',
database: 'mf_consultation'
});
router.get('/users', (req, res) => {
console.log("Enter in get request");
const queryString = "SELECT * FROM user"
connection.query(queryString, (err, rows, fields) => {
if(error) return res.status(400).send(result.error.details[0].message);
console.log("I think we fetched users successfully");
res.json(rows);
});
});
module.exports = router;
我在邮递员上有这个结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /users</pre>
</body>
</html>
我的控制台没有显示 console.log “输入获取请求”。
你有想法吗?先感谢您。
解决方案
在您的index.js
中,您已指定:
app.use('/users', users);
这意味着任何以开头的路由/users
都应该在users
路由器内部处理。
然后,在你的users.js
,你有这个:
router.get('/users', (req, res) => {
// code here
}
这意味着您的 express 应用程序将处理/users/users
而不是仅处理/users
. 第一个/users
引导您的 express 应用程序使用您的user
路由器,而第二个/users
引导您的user
路由器使用GET
路由器内部定义的功能。
如果您只想使用 来访问控制器/处理程序/users
,有两种方法:
- 在你的定义这个
index.js
app.get('/users', (req, res) => {
// code here
});
- 在您的用户路由器中替换您
router.get('/users', ...
的。router.get('/', ...
两种方式都应该有效,只是代码库的结构会发生一些变化。