Как реализовать mysql запрос?
на мой бэкенд приходит Object с полями
const info = {
id: 27,
name: Michael,
surname: Jackson,
email: [email protected],
password: 123456789,
avatar: ''
}
если пользователь не ввел на пример name то она придет просто пустой.
мне нужно изменить в БД те поля который не пустые.
если бы всегда приходили все поля с значениями то мой код выглядел бы так
`UPDATE users SET name=${info.name},surname=${info.surname},email=${info.email},password=${info.password},avatar=${info.avatar} WHERE id=${info.id}`
изза того что иногда приходят поля с пустыми значениями mysql ругается на пустые поля по этому нужно реализовать изменения тех таблиц у которых есть новые значения
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Вы можете вручную сформировать sql-запрос
const info = {
id: 27,
name: 'Michael',
surname: 'Jackson',
email: 'email @gmail.com',
password: '123456789',
avatar: ''
};
const { id, ...userData } = info;
const sqlParts = Object.keys(userData).reduce(
(acc, key) => {
const val = userData[key];
if (val !== undefined && val !== '') {
acc.push(`${key}="${val}"`);
}
return acc;
},
[]
);
const sql = `UPDATE users SET ${sqlParts.join(', ')} where id = ${id}`;
console.log(sql);
Но так лучше не делать. Воспользуйтесь готовыми orm или query builder-ом: