错误:列 "admin" 不存在,但存在



我使用postgresql和expressjs来创建api。动机是在击中api后返回布尔值和msg。我的用户名是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正在使用postman以json格式从body接收请求。

,这里是从数据库的函数,我在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');

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

相关内容

最新更新