错误:数据库中有数据,Navicat可以查询,但是select查询不到

数据库用的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 

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值