在 Express.js 中使用 pg-promise npm 模块检索插入的行

Retrieve inserted row using pg-promise npm module in Express.js

我正在从 Express.js 向 Postgres 中插入一个用户行,如下所示:

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 前端的查询参数。我将此查询用于我的应用程序的注册操作,并想知道我是否可以从同一查询中取回这个新添加的用户。我只是觉得在注册后立即发出另一个获取请求以获取用户信息效率低下,我为登录操作所做的。提前致谢。

在查询末尾添加 RETURNING *。这应该 return 新添加的查询。 (postgresql docs).

在您的查询中:

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

RETURNING * 附加到您的查询,并替换 none with method 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