![](/img/trans.png)
[英]How do I properly save this JSONB into PostgreSQL using node-postgres (pg)?
[英]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.