error: column "admin" does not exist but it does exists

error: column "admin" does not exist but it does exists

我正在使用 postgresql 和 expressjs 创建 api。 动机是 return boolean 和 msg 在点击 api 之后。 我的用户名是 admin.

下面是api

router.get("/", (request, response) => {
  console.log(request.body.name, request.body.password);
  dbpool
    .connect()
    .then(client => {
      client
        .query(
          `SELECT checkUsername(${request.body.name},${request.body.password});`
        )
        .then(res => {
          client.release();
          console.log("logged in");
          response.send(res.rows);
        })
        .catch(err => {
          console.log(err);
        });
    })
    .catch(err => {
      console.log("Check" + err);
    });
});

Api 正在使用邮递员以 json 格式从正文中获取请求。

这是我在 api 中调用的数据库函数。

CREATE OR REPLACE
FUNCTION checkUsername (
    Iusername VARCHAR,
    Iuserpassword VARCHAR
) 
RETURNS BOOLEAN
LANGUAGE sql
AS $$
SELECT EXISTS(
    SELECT *
    FROM "users"
    WHERE username=iusername 
    AND user_password=Iuserpassword
);
$$;

点击邮递员的 api 后,我收到错误:“admin”列不存在

问题已解决。我错过了 '' 引号 如果您查看我的路由器查询方法,我使用了模板字符串

.query(
          `SELECT checkUsername(${request.body.name},${request.body.password});`
        )

上面我将参数传递给数据库函数。 当每个参数传递时,我们需要在它们周围加上引号。 所以查询应该如下所示

.query(
          `SELECT checkUsername('${request.body.name}','${request.body.password}');`
        )

就像我们在数据库中调用函数一样。

SELECT "checkUsername"('param','param');

我们必须在我们的查询方法中准确模仿。