我在谷歌上搜索了这个问题一遍又一遍,似乎找不到解决方案。
下面是我的前端代码:
export const getBlog = (sortColumn, sortOrder) => async dispatch => {
console.log("blogActions.js => getBlog() executed.");
console.log("sortColumn = " + sortColumn);
console.log("sortOrder = " + sortOrder);
let options = {
order: [sortColumn, sortOrder]
};
try{
// call the api. Get all our feedback from our endpoint.
const res = await axios.get('/api/blog', options
/*
{
params: {
sortColumn: "Heading",
sortOrder: "ASC"
}
} */
);
字符串
下面是我的后端代码:
router.get('/', async (req, res) => {
console.log('/api/blog - get');
// Return all blog.
// We need to query our database to get our data.
// We will do this by using the findAll() function, to get all the feedback in the feedbacks table.
// Note: Remember if we use await, we need an async before(req, res).
console.log("req.query = " + req.query);
console.log("req.params = " + req.params);
//const { sortColumn, sortOrder} = req.params;
const { sortColumn, sortOrder} = req.query;
console.log(sortColumn);
console.log(sortOrder);
try{
const list = await Blog.findAll(
/*
{
order: [[sequelize.col(sortColumn)]]
}
*/
);
// send the list back to the client.
res.send(list);
}
catch(e)
{
console.log(e); // error
}
});
型
后端的req.query和req.params都导致“undefined”。
有什么办法解决这个问题吗?
亲切问候,
澳大利亚墨尔本
这是从前端客户端请求数据时服务器上的调试输出:
frontend request, VS Code server console
我试过使用Postman,参数传递得很好,如你所见:Postman的
VS Code server console的
2条答案
按热度按时间o7jaxewo1#
URL查询参数的Axios选项是
params
...params
是与请求一起发送的URL参数必须是普通对象或URLSearchParams对象
参见Axios -请求配置
如果希望在
req.query
中接收sortColumn
和sortOrder
参数,则需要像下面这样构造选项字符串
不过要提醒一句,某些版本的Axios在URL查询序列化方面有一个错误。我总是建议使用Fetch API而不是Axios。
型
如果要使用
req.params
,则需要使用路由参数定义路由型
然后像这样发送请求
型
我不会 * 推荐这种方法用于这种类型的请求。
06odsfpq2#
尝试改变你的axios得到这个,请求查询应该在req.query中
字符串