我试图给自己一个练习,只使用纯节点作为我的服务器和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();
}
答案 0 :(得分:1)
您无法直接返回该值。您需要将自己的回调添加到您需要调用的函数中,并将结果提供给该回调。
例如:
.left-content li.menu-item a.active:after {
font-family: FontAwesome;
content: '\f105';
display: inline-block;
color: #fff;
margin-left: 15px;
}
在这种情况下,您可以在响应处理程序中使用它,如下所示:
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();
});
}
});
}
请注意,这只是一个示例,您应该在输出之前实际执行HTML转义。
或者,如果您正在响应请求并使用Express,则可以简单地传递响应对象并调用其中一个方法。例如:
showAllMovies(function(movie) { response.write('<li>'+movie+'</li>'); });
此处适用相同的HTML转义警告。