0

我正在尝试根据表单的输入使用 Express 向 sqlite3 表发出获取请求。提取请求有效,db.all 也有效,但我从行中收到一个空数组的响应。我已经尝试过 req.query 和 req.params 。不确定错误在哪里。

//server.js

app.get('/names/state', (req, res, next) => {
    const stateValue = req.query.state;
    db.all(`SELECT name FROM states WHERE name=$stateVal`, 
        {
            $stateVal: stateValue
        },
    (err, rows) => {
            res.send({rows:rows});  
    })
});

//script.js

const fetchOneBtn = (e) => {
    e.preventDefault();
    const stateVal = stateInputValue.value;

    fetch(`/names/state?state=${stateVal}`)
    .then(response =>{
        if(response.ok){

            return response.json();
        }
    }).then(names => {
        console.log(names);
    })
};
4

1 回答 1

0

您可以使用以下代码在后端更改代码:

app.get('/names/state', (req, res, next) => {
  const stateValue = req.query.state;
  var query = "SELECT name FROM states WHERE name = " + stateValue;

  db.all(query, (err, rows) => {
    if(err) {
      console.log(err);
      res.status(500).send(err);
    }else {
      res.send({rows});  
    }
  })
});

现在,对于您的前端,您可以使用以下代码进行更改:

const fetchOneBtn = async (e) => {
  e.preventDefault();
  const stateVal = stateInputValue.value;
  try {
    const response = await fetch(`/names/state?state=${stateVal}`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json'
      },
    });
    console.log(await response.json());
    return await response.json();
  } catch(ex) {
    console.log(ex);
  }
};

我希望它可以帮助你。

于 2020-01-29T15:42:17.923 回答