簡體   English   中英

如何僅使用PG和Node返回PostgreSQL數據庫結果?

[英]How to return PostgreSQL database result by using PG and Node only?

我正在嘗試給自己一個實踐,將純節點用作服務器,並使用PG連接到PostgreSQL。 我要在這里做的是從數據庫查詢后返回結果,並知道這是異步問題。 因此,如何從client.query內部的回調函數返回值。

function showAllMovies(){


pg.connect(connectionString, function (err, client, done) {
    if (err) {
      console.log('Can not log into database');
    } else {
      console.log('Connect to database...');
      client.query('SELECT * FROM movies', function (err, result) {
        done();  // client idles for 30 seconds before closing
        var result = JSON.stringify(result.rows[0].movie);
        console.log(result);
        return result;
      });
    }
  });
  pg.end();
}

您不能直接返回該值。 您需要向函數添加自己的回調,然后將其提供給該回調。

例如:

function showAllMovies(callback)
{
  pg.connect(connectionString, function (err, client, done)
  {
    if (err)
    {
      console.log('Can not log into database');
    }
    else
    {
      console.log('Connect to database...');
      client.query('SELECT * FROM movies', function (err, result)
      {
        callback(result.rows[0].movie);
        done();
      });
    }
  });
}

在這種情況下,您可以像下面這樣在響應處理程序中使用它:

showAllMovies(function(movie) { response.write('<li>'+movie+'</li>'); });

請注意,這只是一個示例,您實際上應該在輸出之前進行HTML轉義。

另外,如果您要響應請求並使用Express,則可以簡單地傳遞響應對象並調用其方法之一。 例如:

app.get('/movies', function(req,res)
{
  pg.connect(connectionString, function (err, client, done)
  {
    if (err)
    {
      console.log('Can not log into database');
    }
    else
    {
      console.log('Connect to database...');
      client.query('SELECT * FROM movies', function (err, result)
      {
        res.write('<li>'+result.rows[0].movie+'</li>');
        done();
      });
    }
  });
});

相同的HTML轉義警告在此處適用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM