仅使用 PG 和 Node 如何 return PostgreSQL 数据库结果?
How to return PostgreSQL database result by using PG and Node only?
我正在尝试给自己一个练习,只使用纯节点作为我的服务器和 PG 来连接到 PostgreSQL。我想在这里做的是 return 从数据库查询后的结果,知道这是异步的问题。那么我如何 return 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();
}
您不能直接 return 值。您需要将自己的回调添加到您需要调用的函数中,并将结果提供给该回调。
例如:
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 转义警告适用于此处。
我正在尝试给自己一个练习,只使用纯节点作为我的服务器和 PG 来连接到 PostgreSQL。我想在这里做的是 return 从数据库查询后的结果,知道这是异步的问题。那么我如何 return 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();
}
您不能直接 return 值。您需要将自己的回调添加到您需要调用的函数中,并将结果提供给该回调。
例如:
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 转义警告适用于此处。