Получить вставленную строку с помощью модуля pg-promise npm в Express. js - PullRequest
0 голосов
/ 17 апреля 2020

Я вставляю строку пользователя в Postgres из Express. js следующим образом:

db.none("INSERT INTO users (email, password) VALUES (${incoming.email}, crypt(${incoming.password}, gen_salt('bf')))",{
    incoming: { email: qemail, password: qpwd}
  }
).then(function (data) {
  // data is null
});

Адрес электронной почты и пароль получены из параметров запроса в React. js внешний интерфейс. Я использую этот запрос для действия регистрации в моем приложении и хотел узнать, смогу ли я вернуть этого нового пользователя из этого же запроса. Я просто почувствовал, что сделать еще один запрос get сразу после регистрации, чтобы получить информацию о пользователе, было неэффективно, что я делаю для своего действия при входе в систему. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Добавьте RETURNING * к вашему запросу и замените нет методом one .

const row = await db.one("INSERT INTO users(email, password) VALUES(${incoming.email}, 
                          crypt(${incoming.password}, gen_salt('bf'))) RETURNING *",
    {
        incoming: { email: qemail, password: qpwd}
    }
);

// row = the newly inserted row
1 голос
/ 18 апреля 2020

В конце запроса добавьте RETURNING *. Это должно вернуть вновь добавленный запрос. (postgresql документы ).

По вашему запросу:

"INSERT INTO users (
    email, password
  ) VALUES (
    ${incoming.email}, crypt(${incoming.password}, gen_salt('bf'))
  ) RETURNING *"
...