Обновление значения в SQL (лучше-sqlite3) с Node.JS
В настоящее время у меня есть база данных людей с каждым отдельным человеком, и они имеют значение статуса. Я пытаюсь изменить их статус значения.
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
функции в официальной документации.
2 ответа
Я не могу найти функцию под названием query()
в API-интерфейсе лучше-sqlite3 для Database
класс Я думаю, что вам нужно prepare()
Statement
объект, то run()
Это.
Кроме того, имена столбцов не могут быть переданы в качестве связанных параметров. Ваш запрос должен выглядеть так:
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);
В соответствии с шаблонами вы можете использовать синтаксис javascript для замены переменных на их значение.
let updates = db.exec(`UPDATE people SET status='${status}' WHERE id='${id}'`);