如何使用NodeJ从Postgresql获取数据?

时间:2018-10-11 20:05:05

标签: javascript node.js postgresql

在尝试与Postgresql数据库交互时遇到问题,当输入root作为pseudo时出现错误:

  

列根不存在:

NodeJS代码:

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);

   });
});

用户database table

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

最后我只需要这样写我的sql查询:

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