【问题标题】:Can't return any value while connecting Redshift from Node JS从 Node JS 连接 Redshift 时无法返回任何值
【发布时间】: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;
};

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda amazon-redshift


    【解决方案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();
            }
          });
        }
      }); 
    });
    
    };
    

    【讨论】:

      猜你喜欢
      • 2019-11-16
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多