【问题标题】:query issue in postgrespostgres中的查询问题
【发布时间】:2019-04-26 23:07:42
【问题描述】:

我在 Node.js 应用程序中使用以下代码 sn-p 来尝试查询(本地)postgres 数据库:

   var conString = "postgres://user:password@localhost:5432/mydatabase";
   var client = new pg.Client(conString);

    client.connect(function(err) {
      if(err) {
        return console.error('could not connect to postgres', err);
      }
      client.query("SELECT * FROM users WHERE name = $1 AND cred = $2", [String(req.body.usr), String(req.body.pword)], function(err, result) {
        if(err) {
          return console.error('error running query', err);
        }
         if (typeof result.rows[0] === "undefined") {
         console.log("No user/password determined in DB for login attempt");
         } else {

         }  //user/password is 'undefined' (NOT found in database)...OR NOT... 

        client.end();
      });
    });

查询运行时我收到一个错误...我认为问题可能是我的查询调用中的参数数量...?如果是这种情况(或者是其他一些语法问题),任何人都可以告诉我应该如何更改代码以正确执行查询......?

我只需从表单(req.body.usr 和 req.body.pword)中获取 2 个(用户提供的)结果,并将它们与数据库表“用户”进行比较,以确定凭据是否正确。我已经相信数据库连接可以正常工作。非常感谢任何建议。提前谢谢你。

【问题讨论】:

  • 您的req.body 是否包含usrpword

标签: node.js database postgresql


【解决方案1】:

变化:

client.query("SELECT * FROM users WHERE name = $1 AND cred = $2", [String(req.body.usr), String(req.body.pword)], function(err, result) {...

到:

const query = {
    text: "SELECT * FROM users WHERE name = $1 AND cred = $2", 
    values: [String(req.body.usr), String(req.body.pword)]
};
client.query(query, function(err, result) {

阅读更多:https://node-postgres.com/features/queries

【讨论】:

  • 感谢您的回复。但是我试过了,这似乎不是问题。我的错误消息是“错误运行查询 { 错误:绑定消息提供 2 个参数,但准备好的语句”“需要 0”。所以它似乎在查询的语法中,但我不知道如何纠正它......以前从未尝试过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
相关资源
最近更新 更多