数据库用的MySQL,接口编写用的Node
话不多说,先贴代码:
//index.js
wx.request({
url: urils.baseUrl+'/api/getStoreMsg',
method: 'GET',
header:{
'Content-type': 'application/json',
},
data:{
storeId: storeId
},
success: res => {
//成功的回调函数,里面是对返回数据的处理
console.log(res.data)
}
})
//接口文件
exports.getStoreMsg = (req,res) => {
//数据解构
const { storeId } = req.body
const sql = `select * from store where storeId=${storeId}`
db.query(sql,(err,results)=>{
if(err) return res.send(err)
if(reaults.length !== 1){
return res.send(
code: 1,
msg: '暂无店铺信息',
data: results
)
}
return res.send({
code: 0,
msg: '获取店铺信息成功!',
data: results
})
})
}
然后返回的结果是res.data.data是空的(具体的图我忘记截了,大家意会一下)
然后我就控制台打印(console.log)了一下传过去的storeId,是没问题的。
然后我开始怀疑数据库是不是抽风,然后我在Navicat里面执行了查询语句,结果如下:
一点问题也没有,于是问题来了,肯定是接口这一块出了问题。然后我把接口里面的SQL语句中的变量改成了特定值,然后发现它能返回正确的数据。那么出问题的地方就得再往上推——接口传递的数据。
于是,我添加了下面这几句在接口里:
exports.getStoreMsg = (req,res) => {
const { storeId } = req.body
return res.send({
data: storeId
})
//以下省略
}
然后发现返回的res.data.data里面是空的,于是我们就找到了问题,这个参数并没有被正确传给我们的接口。然后返回接口调用的地方再看。
看了又看,左看右看上看下看都看不出什么问题,于是我开始了CSDN和百度,还夹杂了一点知乎(虽然知乎上面的并没有什么用)
最终经过大量的搜索,发现很多都提及了参数传递时header数据类型和数据解析的问题。于是我从最简单的开始试错,把请求类型从GET改成了POST,herder改成了
header:{
'Content-type': 'application/x-www-form-urlencoded'
}
然后他就好了,好了!!!
虽然不太明白是为什么,但我决定以后能写POST就不写GET