我正试图传递一个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就能得到404
*facebookUserId
到router.get()
发布于 2019-01-17 05:01:45
在您的路由中,您期望参数facebookUserId是一个路由参数(如/api/user/10213594301678639),但在上面的示例中,您使用一个查询参数(/api/user?facebookUserId=10213594301678639)调用该路由。
发布于 2019-01-17 05:00:21
似乎您正在尝试从get端点路由获取查询字符串,而不是param。
在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;如果您希望像在原始代码中一样使用param而不是/:facebookUserId,则需要将端点调用更改为类似于so http://xxx/api/users/10213594301678639
发布于 2019-01-17 05:29:08
执行以下操作可以捕获查询param:
router.get(':facebookUserId?' ... (req, res) => {
...
const facebookUserId = req.query.facebookUserId;
...
});https://stackoverflow.com/questions/54229264
复制相似问题