postgresql 如何在NodeJS中从Postgres获取值?

yrdbyhpb  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(103)

我现在正在尝试建立一个网站的用户认证逻辑。现在我应该检查,当一个用户试图登录时,他是否已经注册了一个电子邮件/密码。但是我不能简单地从数据库中获得字段的值,作为一个字符串。
在数据库中,我有6个字段(isSuperuserfullNameinstitutionpasswordemailapproved)。对于身份验证,未完成的方法如下:

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]),它只返回一个空数组。
我做错了什么?有什么办法吗?

qeeaahzv

qeeaahzv1#

我不确定PostgreSql,但我知道sql,所以给予一试;

router.post("/login", async (req, res, next) => {
    const { email } = req.body;
    const data = await client.query(`SELECT * FROM user_table WHERE email= ${email}`).then((result) => {
        return result
    })
    if (!data) { // OR if data is an array then use "data.length == 0"
        return res.status(401).json({
            success: false,
            message: "Login authentication failed!"
        })
    }
})

相关问题