问题:
- postman输入参数无法查询到用户列表,页面点击搜索时用户列表无法查询
解决步骤:
-
查看接口文档是如何传参的
-
在postman中修改参数,接口中查不到是因为少了queryInfo或otherWhere的层级,加上就可以查到了
-
在封装的post请求中,打印config参数,发现获取的data数据少了一层queryInfo
-
然后在post请求中,把data里面的queryInfo加一层嵌套,与接口文档对应
/*旧*/
export function getPageListData(url: string, queryInfo: any) {
return ttRequest.post<IDataType>({
url: url,
data: queryInfo
})
}
/*新*/
export function getPageListData(url: string, queryInfo: any) {
return ttRequest.post<IDataType>({
url: url,
data: {
queryInfo: queryInfo
}
})
}
- 在页面中输入用户名,其他为空,再点击搜索,打印queryinfo可以输出所有的字段包括空的字段
const getPageData = (queryInfo: any = {}) => {
console.log(queryInfo) //打印点击搜索时queryInfo的所有字段
if (queryInfo) {
for (const key in queryInfo) {
let element = queryInfo[key]
// 去除所有搜索条件的前后空格
if (typeof queryInfo[key] == 'string') {
queryInfo[key] = queryInfo[key].trim()
}
//去除无效字段
if (element === '') {
delete queryInfo[key]
}
}
}
store.dispatch('system/getPageListAction', {
pageName: props.pageName,
queryInfo: {
pageSize: pageInfo.value.pageSize,
currentPage: pageInfo.value.currentPage,
//这里如果没有写otherWhere后台也查询不到搜索的数据
otherWhere: {
...queryInfo
}
}
})
}
getPageData()
- 每次输入内容发送搜索请求,可以在后台egg里定位,打印body的内容,获取到queryinfo的值,看看字段有没有嵌套或其他的错误
过滤掉空字段后的后台显示