Как реализовать 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-ом:

→ Ссылка