繁体   English   中英

AWS lambda api Postgres 不会插入

[英]AWS lambda api Postgres not won’t insert

我有以下 AWS lambda 处理程序:

exports.handler = async (event, data) => {
  var AWS = require('aws-sdk/global');
  const awsParamStore = require('aws-param-store');
  const {
    Pool
  } = require('pg');
  var host;


  await awsParamStore.getParameter('testing-main-rds-url', { //get database host from AWS
      region: 'us-east-1'
    })
    .then((parameter) => {
      host = parameter.Value
    });

  var signer = await new AWS.RDS.Signer({
    region: 'us-east-1',
    username: 'developer',
    hostname: host,
    port: 5432
  });

  var token = await signer.getAuthToken({}); //get token from AWS


  const db = await new Pool({
    user: "developer",
    host: host,
    database: "main",
    password: token,
    port: 5432,
    ssl: true,
  });


  const query = `INSERT INTO crm.user_crm
   (u_id,username)
   VALUES ($1,$2)`;
  const values = [event.u_id, event.username];


db.connect((err, client, release) => {
  if (err) {
    throw("Error acquiring client.", err.stack);
  } else {
    client.query(query, values, (err, result) => {
      release();
      if (err) {
        throw("Error executing query.", err.stack);
        return ;
      } else {
        console.log("INSERT DONE");
        db.end()
        return {
            statusCode: 200
        };
      }
    })
  }
})
};

此代码将接收数据并将其添加到数据库中。 当我使用console.log(require('./index').handler(data));在我的计算机上运行它时它完美地工作并插入记录。 当我从 lambda 运行它时,它什么也不返回,也不插入记录。 任何帮助,将不胜感激。

您将async/awaitcallback样式混合在一起。 您的 lambda function 将在查询完成之前完成。

作为pg 文档中的示例,它支持async/await :而不是db.connect((err, client, release) => {...

const res = await pool.query(query, values);
console.log("INSERT DONE");
await pool.end()
return {
  statusCode: 200
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM