Обновите несколько столбцов для пользователя - postgresql и nodejs - PullRequest
0 голосов
/ 15 октября 2018

Я ценю, что эти вопросы были рассмотрены много раз, но, кажется, не могу заставить его работать для моего сценария, я просто не понимаю синтаксис или реализацию правильно.

Сейчас у меня очень простойметод обновления, который обновляет 1 столбец, находя этого пользователя по его идентификатору

User.update = (id, value) => {
  pool.query('UPDATE users SET membership_expiry_date = $2 where id = $1', [id, value], (err) => {
    if (err) {
      return console.error(err);
    }
    return console.log('User Updated');
  });
};

await User.update(req.body.user_id, "value");

У меня есть несколько столбцов, которые я хотел бы обновить, и не уверен, как это настроить.Каждый раз, когда я обновляюсь, у меня может быть разное количество столбцов для обновления, в зависимости от того, какая информация обновляется

1 Ответ

0 голосов
/ 15 октября 2018

Вы можете передать столбцы, которые хотите передать, как объект и динамически построить запрос.

User.update = (id, values) => {
      let columns = Object.keys(values);
      let params = [id];
      let query = "UPDATE users SET ";
      for(let i = 0; i < columns.length; i++) {
        query = `${query}${columns[i]} = $${params.length + 1},`
        params.push(values[columns[i]]);
      }
      query = `${query.substring(0, query.length-1)} WHERE id = $1`
      console.log(query);
      console.log(params)
    };

await User.update("req.body.user_id", {columnToUpdate: "newValue"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...