Sqlite3 возвращает пустой массив с GET-запросом в Express - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь сделать запрос на получение таблицы sqlite3, используя Express, на основе ввода из формы. Запрос на выборку работает, как и db.all, но я получаю ответ в виде пустого массива из строк. Я уже пробовал req.query и req.params. Не уверен, где ошибка.

// сервер. 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});  
    })
});

// скрипт. 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);
    })
};

1 Ответ

0 голосов
/ 29 января 2020

Вы можете изменить свой код в своем бэкенде с помощью этого кода ниже:

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);
  }
};

Я надеюсь это может вам помочь.

...