【问题标题】:Query not showing results after passing parameters from frontend?从前端传递参数后查询不显示结果?
【发布时间】:2021-02-16 03:48:17
【问题描述】:

我将一个搜索参数从我的 React 前端传递到我的 mySQL Express 后端。我的硬编码查询有效,但是当我尝试传入参数时,我的代码不会捕获错误,但它也不会将任何数据加载到 url。

前端组件:

    handleChange = (e) =>{
        e.preventDefault();
        console.log(e.target.value);
        setState(e.target.value);
        Axios.get("http://localhost:3000/api/data", {params: {state:state}})
        .then(()=>{
            console.log("successful GET");
        })
    }

后端路由器:

router.get('/', async (req, res, next)=>{
    let state = req.query.state;

    try{
        let results = await mysqldb.getCities(state);
        res.json(results);
    } catch(e){
        console.log(e);
        res.sendStatus(500);
    }

});

后端的db:

let mysqldb = {};

mysqldb.getCities = (state) =>{
    return new Promise((resolve, reject) =>{
        conn.query("SELECT city FROM states_city WHERE state_name=? ORDER BY city", [state], (err, results)=>{
            if(err){
                return console.log(err);
            }else{
                console.log("queried succesful " + state);
                return resolve(results);
            }
        })
    });
}

【问题讨论】:

  • 嗨,你能console.log()results变量吗?
  • 哦,我得到“RowDataPacket { city: namehere }”,所以它得到了结果,但是 json 没有显示在 url 上?什么是行数据包?

标签: mysql reactjs database express axios


【解决方案1】:

RowDataPacket 是创建await mysqldb.getCities(state); 返回的对象的构造函数的名称。

您可以通过以下方式将其转换为常规对象并将其发送回:

let results = await mysqldb.getCities(state);
results = JSON.parse(JSON.stringify(results));
res.json(results);

【讨论】:

  • 当我在控制台记录新结果时,我得到了正确的响应格式,但是当我转到 url 时,仍然没有数据。
  • @LatePayment 我在回答中发现了一个错字。我有result = JSON.parse(JSON.stringify(results)); 而不是results = ...。如果您复制并粘贴,那可能就是问题所在。我已经更正了答案。
  • 是的,我看到了错字并假设是这样,不幸的是,这似乎不是问题。当我加载 url 时,只需清空 []。
  • 你有/api/data的专用路由吗?由于/api/data/ 之间的差异,我不得不问。我想我只是要求确保您访问的是正确的 URL。
  • 是的,就像我在帖子中提到的那样,当我对查询进行硬编码时,我的查询和链接工作正常。只有当我传递我的 axios 参数时才会出现问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多