В базу данных не сохраняется boolean при работе с pg-npm
Создал метод:
async changePerson(id, name, surname, isEmployee) {
let updateObj = {};
if (name) {
updateObj.name = name;
}
if (surname) {
updateObj.surname = surname;
}
if(isEmployee) {
updateObj.is_employee = isEmployee;
}
const text = "UPDATE person SET name = $1, surname = $2, is_employee = $3 WHERE id = $4"
const values = [updateObj.name, updateObj.surname, updateObj.isEmployee, id];
return await client.query(text, values);
}
Дергаю его через роут:
router.patch('/changePerson/id/:id', bodyParser.json(), async (req, res) => {
const { id } = req.params;
const isEmployee = req.body.is_employee
const { name, surname } = req.body
try {
person = (await new methods().getPerson(id)).rows[0]
if (person) {
try {
await new methods().changePerson(id, name, surname, isEmployee)
res.sendStatus(200)
} catch (error) {
res.sendStatus(500)
}
} else {
res.sendStatus(404);
}
} catch (error) {
res.sendStatus(500);
}
})
Все значения в БД (name\surname) меняются на новые, а вот is_employee/isEmployee (в БД/коде соответственно) всегда получается null. Причем перед сохранением в массив values я вывожу его в консоль и вижу пережданное значение, но селект на всех юзров:
const text = "SELECT * FROM person";
return (await client.query(text)).rows
всегда отдает "is_employee": null
Источник: Stack Overflow на русском