我现在正在尝试建立一个网站的用户认证逻辑。现在我应该检查,当一个用户试图登录时,他是否已经注册了一个电子邮件/密码。但是我不能简单地从数据库中获得字段的值,作为一个字符串。
在数据库中,我有6个字段(isSuperuser
、fullName
、institution
、password
、email
、approved
)。对于身份验证,未完成的方法如下:
router.post("/login", async (req, res, next)=> {
const email = req.body.email;
const data = await client.query(`SELECT * FROM user_table WHERE email= $1;`, [email])
const arr = data.rows
//const arr = data.rows;
.then(user=> {
if(arr==null || arr== undefined || arr.length==0){
return res.status(401).json({
message: "Login authentication failed!"
})
}
})
})
我的问题是,当我检查时,如果登录时提供的电子邮件已经存在,我应该简单地比较它(req.body.email
),值为(s)数据库中的email
字段.但我没有找到任何解决方法,如何只得到一个字符串,作为查询的结果.const arr
给出一个数组,到目前为止,这段代码可能还能用(尽管丑得要命),但当涉及到密码比较时,我会流血。
如果我尝试client.query("SELECT password FROM user_table WHERE email= $1;", [email])
,它只返回一个空数组。
我做错了什么?有什么办法吗?
1条答案
按热度按时间qeeaahzv1#
我不确定PostgreSql,但我知道sql,所以给予一试;