我正在尝试传递类似url参数的
这是我的App.js:
// route setup
const usersRouter = require('./routes/users');
app.use('/api/users', usersRouter);
module.exports = app;
这是我的users.js:
router.get('/:facebookUserId', jsonParser, async (req, res) => {
// get user by facebookUserId
const users = db.collection('users');
const facebookUserId = req.params.facebookUserId;
const query = {
facebookUserId: facebookUserId,
};
const user = await findOne(users, query);
res.json(user);
});
module.exports = router;
我的问题是,添加后我会立即得到404
:facebookUserId
到router.get()
答案 0 :(得分:3)
似乎您正在尝试从获取端点路由获取查询字符串而不是参数。
在您的 users.js 中,从req.query
// as your path is the same with the endpoint prefix api/users, use '/'
router.get('/', jsonParser, async (req, res) => {
// get user by facebookUserId
const users = db.collection('users');
// get the query string from req.query
const facebookUserId = req.query.facebookUserId;
const query = {
facebookUserId: facebookUserId,
};
const user = await findOne(users, query);
res.json(user);
});
module.exports = router;
如果要像在原始代码中那样使用参数/:facebookUserId
,则需要将端点调用更改为
http://xxx/api/users/10213594301678639
答案 1 :(得分:1)
在您的路由中,您期望参数facebookUserId
是一个路由参数(例如/ api / users / 10213594301678639),但是在上面的示例中,您正在使用查询参数(/ api / users?facebookUserId = 10213594301678639)
答案 2 :(得分:0)
执行以下操作以捕获查询参数的工作原理:
router.get(':facebookUserId?' ... (req, res) => {
...
const facebookUserId = req.query.facebookUserId;
...
});