首页 > 解决方案 > 如何使用 NodeJs 从 postgresql 获取数据?

问题描述

尝试与 postgresql 数据库交互时遇到问题,当输入 aroot作为pseudo获取错误时:

列根不存在:

节点代码:

app.get('/login',function(request,response){
   var username = request.query['username'];
   var password = request.query['password'];
   console.log("utilisateur "+ username +" avec "+ password +" comme mot 
 de passe");

   const pool  = new Pool(config);
   sql = 'select * from users where pseudo = "' + request.query["username"] + '";';

   pool.on('error',function(err,client){
     console.log("erreur de connexion",err);
   });

   pool.query(sql,function(err,res){
      if (err){return console.error('erreur dexécution !!',err,sql);}
      console.log('nom:', res.rows[0].nom, ' prenom:', res.rows[0].prenom,' pseudo:', res.rows[0].pseudo);

   });
});

用户数据库表

标签: javascriptnode.jspostgresql

解决方案


您的问题可能是因为 postgresql 字符串需要单引号,但您使用的是双引号。尝试这样的事情:

sql = `select * from users where pseudo = '${username}';`;

但是这段代码包含一个令人讨厌的安全漏洞,称为SQL 注入。考虑一下如果用户输入(假)用户名将发送到您的数据库的 SQL root OR 1 = 1; --。一个简单的解决方案是使用参数化查询


推荐阅读