简体   繁体   中英

Node JS : Select json data after postgres query

I am trying to get some Data from my postgres Database. But when I try to get the json data from the postgres result, I always receive an error.

Here is my Node JS code:

pg.connect(connectionString, function(err, client, done) {
var pubKey;
var query1 = client.query("SELECT * FROM users where userid=($1) ORDER BY userid ASC;", [umschlagInnen.sourceUserID]);

    query1.on('row', function(row) {
        pubKey = row;
    });

    console.log(pubkey.pubkey);
}

umschlagInnen.sourceUserID is "2"

My postures-table for "users" looks like this:

users(userID int PRIMARY KEY, saltMaster varchar(255) not null, privKeyEnc varchar(2048) not null, pubKey VARCHAR(2048) not null)

The error:

ReferenceError: pubkey is not defined

Can you find any of my Mistakes?

First, there is an error on the capitalisation of your pubKey variable:

pg.connect(connectionString, function(err, client, done) {
  var pubKey;
  var query1 = client.query("SELECT * FROM users where userid=($1) ORDER BY userid ASC;", [umschlagInnen.sourceUserID]);

  query1.on('row', function(row) {
    pubKey = row;
  });

  console.log(pubkey.pubkey); // broken version
  console.log(pubKey.pubKey); // fixed version
}

but bear in mind that this console.log() will be executed before the query callback function executes, so pubKey is still not valid. Move the console.log() inside the callback function and it should contain your data.

Try this:

pg.connect(connectionString, function(err, client, done) {
  // var pubKey; <-- don't need this variable anymore
  var query1 = client.query("SELECT * FROM users where userid=($1) ORDER BY userid ASC;", [umschlagInnen.sourceUserID]);

  query1.on('row', function(row) {
    console.log(row.pubKey);
    // do something with the data here ...
  });

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM