使用Node.js

时间:2017-10-27 00:56:35

标签: node.js postgresql aws-lambda serverless-framework serverless

我的'handler.js'函数连接到Postgres数据库,并使用node.js执行一些查询。我的功能在本地成功运行,但是当作为AWS lambda访问时,查询不起作用。

我还在'serverless.yml'中添加了相应的vpc安全组和子网ID。

“Cloudwatch”中的错误日志只显示查询前后的console.log语句,并且函数因超时错误而终止。我无法弄清楚这个问题。

我在下面添加了示例'handler.js'代码:

var { Pool, Client } = require('pg');

export function apiTest(event, context, callback) {
  var connectionString = 'postgresql://username:password@database.server.com:xxxx/dbname';
  var client = new Client({
    connectionString: connectionString,
  })
  client.connect();
  console.log('Connected to PostgreSQL database');

  client.query('SELECT * from table', (err, res) => {
    console.log("inside query");
    var jsonString = JSON.stringify(res.rows);
    var jsonObj = JSON.parse(jsonString);

    const headers = {
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Credentials": true
    };

    // Return status code 500 on error
    if (err) {
      const response = {
        statusCode: 500,
        headers: headers,
        body: JSON.stringify({
          status: false
        })
      };
      callback(null, response);
      client.end();
      return;
    }

    const response = {
      statusCode: 200,
      headers: headers,
      body: JSON.stringify(jsonObj)
    };

    callback(null, response);
    console.log("query success")
    client.end()
    context.succeed(context);
  })
}

0 个答案:

没有答案