我在mysql上有本地后端,我使用connect Node.js连接它们。一切正常。连接是成功的所有查询都在发生,但为什么这不工作。
router.get("/:users/:name", (req, res) => {
const { name } = req.params;
console.log(req.params);
mysqlConnection.query(
"SELECT * FROM user WHERE name = ?",
[name],
(error, rows, fields) => {
console.log(rows);
console.log(error);
if (!error) {
res.json(rows);
} else {
console.log(error);
}
}
);
});
而它的对应物在工作。
router.get("/:users/:id", (req, res) => {
const { id } = req.params;
mysqlConnection.query(
"select * from user where id = ?",
[id],
(error, rows, fields) => {
if (!error) {
res.json(rows);
} else {
console.log(error);
}
}
);
});
我正在使用Postman来测试我的路由。例如:localhost:8080\users\name
我试过这个
router.get("/:users/:name", (req, res) => {
const { name } = req.params;
console.log(req.params);
mysqlConnection.query(
`SELECT * FROM user WHERE name = '${name}'`,
(error, rows, fields) => {
console.log(rows);
console.log(error);
if (!error) {
res.json(rows);
} else {
console.log(error);
}
}
);
});
1条答案
按热度按时间pgky5nke1#
这里的问题是Express无法区分
:id
和:name
;它们都只是单个字符串参数,因此任何匹配的请求都将被路由到先注册的任何一个。假设
id
是数字,您可以提供更多的匹配信息,以便Express知道将像/users/123
这样的请求路由到哪里请参见路径参数