2016-09-26 8 views
-1

ノードJS - DB呼び出しasync?私はJSのノードに非常に新しい、私はPostgresのDBとノードJSを接続するには、以下のリンクを使用しています

How to make connection to Postgres via Node.js

次のコードをノードのコンソールで実行したときには、DB(Postgresの)からいくつかの結果をフェッチ

var query_str = "SELECT name FROM city" ; 
var pg = require('pg'); 
var conString = "postgres://postgres:[email protected]:5432/cfg"; 
var client = new pg.Client(conString); 
client.connect(); 
var query = client.query(query_str); 
console.log(query); 

しかし、私は、関数呼び出しを次のように関数内で上記のコードを入れて作るとき

function getname() 
{ 
    var query_str = "SELECT name FROM city" ; 
    var pg = require('pg'); 
    var conString = "postgres://postgres:[email protected]:5432/cfg"; 
    var client = new pg.Client(conString); 
    client.connect(); 
    var query = client.query(query_str); 
    console.log(query); 
    return query; 
} 

空のオブジェクトを返します。それはコードが非同期であるためですか?もしそうなら、どのように問題を解決することができますか?

誰でもこの問題の解決にお手伝いできますか?またはさらに進める方法。ありがとう。

答えて

1

client.queryが非同期である、あなたの関数はcallback機能を期待すべきか、それが返す必要がありますPromise

function getname(cb) { 
 
    var query_str = "SELECT name FROM city"; 
 
    var pg = require('pg'); 
 
    var conString = "postgres://postgres:[email protected]:5432/cfg"; 
 
    var client = new pg.Client(conString); 
 
    client.connect(function(err) { 
 
    if (err) cb(err); 
 
    client.query(query_str, function(err, result) { 
 
     if (err) cb(err); 
 
     cb(null, result); 
 
     client.end(function(err) { 
 
     if (err) cb(err); 
 
     }); 
 
    }); 
 
    }); 
 
} 
 

 
getname(function(error, data) { 
 
    if (error) { 
 
    console.log(error); 
 
    } else { 
 
    console.log(data); 
 
    } 
 
});

関連する問題