Я хочу обновить данные в таблице SQLite из приложения Node.js.
Предположим, у меня есть таблица "вещей" с 3 столбцами: "id", "code" и "name".
Итак, я создаю экспресс-маршрут PUT, в котором я строю инструкцию SQL UPDATE с некоторыми переменными, извлеченными из проанализированного тела.
app.put("/:id",function (req, res, next) {
db.run("UPDATE things SET code=?, name=? WHERE id=?",
[req.body.code,req.body.name,req.params.id],
function(err) {
...
})
}
Я могу обновить свою таблицу с помощью поставленного глагола
curl --header 'Content-Type: application/json' \
--request PUT \
--data '{"code":"ALC","name":"Alice"}' \
http://localhost:3000/1
пока, так хорошо.
Но в некоторых случаях я просто хочу обновить один столбец строки, оставив все остальные столбцы без изменений. Я хочу, чтобы мой пользователь мог вызывать мой интерфейс, просто
curl --header 'Content-Type: application/json' \
--request PUT \
--data '{"name":"Anna"}' \
http://localhost:3000/1
однако, результат этой операции устанавливает столбец «код» в NULL, а не оставляет его неизменным.
Можно ли написать оператор UPDATE, который может привести к такому результату? или мне нужно динамически создавать различные операторы UPDATE?
В примере будет три в зависимости от того, хочу ли я изменить один, другой или оба столбца? но это станет очень неудобным в реальном сценарии с более чем 20 возможными столбцами обновления.