Обновление значения в SQL (лучше-sqlite3) с Node.JS - PullRequest
0 голосов
/ 03 марта 2019

В настоящее время у меня есть база данных людей с каждым отдельным человеком, и они имеют значение статуса.Я пытаюсь изменить значение их статуса.

  const id = parseInt(req.params.id , 10);
  const { valid, messageObj } = validateId(id);
  if (!valid) {
    res.status(400).send(messageObj);
  }

  let { status, priority } = req.body;
  let people = db.prepare('select * from people').all();
  const person = people.find(person => person.id === id);    

  if(status !== 'none' & status == 'ready' || status == 'done'){
    let updates = db.query(
        'UPDATE people SET ? WHERE ?', 
         [{ status: status }, { id: id }]
    );
  }

Я получаю ошибку db.query is not a function, но я получаю ее для каждой функции, которую я пробую.

Довольно плохо знаком с SQL, но просто пытаюсь выяснить это или какую-либо документацию, которая поможет мне, так как лучше-sqlite3 не имеет функций update в официальной документации.

1 Ответ

0 голосов
/ 03 марта 2019

Я не могу найти функцию с именем query() в лучше-sqlite3 API для Database класса .Я думаю, что вам нужно было бы prepare() a Statement объект , затем run() it.

Кроме того, имена столбцовне может быть передан в качестве связанных параметров.Ваш запрос должен выглядеть следующим образом:

UPDATE people SET status = ? WHERE name = ?

Вам необходимо изменить это:

let updates = 
    db.query('UPDATE people SET ? WHERE ?', [{ status: status }, { id: id }]);

На:

const stmt = db.prepare('UPDATE people SET status = ? WHERE id = ?'); 
const updates = stmt.run(status, id);
...