从 Node JS 连接 Redshift 时无法返回任何值
Posted
技术标签:
【中文标题】从 Node JS 连接 Redshift 时无法返回任何值【英文标题】:Can't return any value while connecting Redshift from Node JS 【发布时间】:2021-06-22 08:39:44 【问题描述】:下面的代码连接到Redshift数据库却返回一个空响应,即使响应会显示在console.log中,为什么?
index.js
const config =
user: 'user',
database: 'database',
password: 'password',
port: port,
host: 'hostname',
;
var response = [];
console.log('Before Connection');
exports.handler = function index(event, context, callback)
var redshiftClient = new Redshift(config, rawConnection:true);
redshiftClient.connect(function(err)
console.log('After Connection');
if(err) throw err;
else
redshiftClient.query('SELECT * FROM customer', raw: true, function(err, data)
if(err) throw err;
else
response = data;
console.log(data);
redshiftClient.close();
return response;
);
);
return response;
;
【问题讨论】:
【参考方案1】:我使用了 Promise 概念,它确实为我正确返回了响应。
示例 JSON "user_id": "1001"
var Redshift = require('node-redshift');
const config =
user: 'user',
database: 'database',
password: 'password',
port: port,
host: 'hostname',
;
// The values passed in to the options object will be the difference between a connection pool and raw connection
var redshiftClient = new Redshift(config, rawConnection:true);
exports.handler = async (event) =>
return new Promise(function(resolve, reject)
redshiftClient.connect(function(err)
if(err) throw err;
else
redshiftClient.parameterizedQuery('SELECT * FROM customer where user_id = $1', [event.user_id], raw: true, function(err, data)
if(err) throw reject(err);
else
resolve(data);
redshiftClient.close();
);
);
);
;
【讨论】:
以上是关于从 Node JS 连接 Redshift 时无法返回任何值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Node.js 连接到我的 redshift 集群?
使用 Node.js 从 Redshift 将数据复制到 postgres
尝试使用 node-redshift 从节点连接到 redshift 时超时