共享 db postgres 代码的 AWS Node 2 Lambda 不返回第二个 lambda 的值?

问题描述 投票:0回答:1

我的 Node Ts Lambda 具有以下项目结构

项目根/ │ ├── src/ │ ├── lambda1/ │ │ ├──索引.ts
│ │ ├── 服务.ts
│ │ ├── package.json.
│ │ └── tsconfig.json
│ │ │ ├── lambda2/ │ │ ├──索引.ts
│ │ ├── Service.json
│ │ ├── package.json
│ │ └── tsconfig.json │ │ │ └── 共享/ │ ├── dbconnect.ts
│ ├── 常量.ts
│ └──
│ ├── tsconfig.json
├── 包.json

在我的共享 dbconnect.ts 中,具有数据库连接代码和使用 pgpromise 包执行函数的方法。

实际问题 部署 2 个 lambda 后,第一个 lambda 可以成功返回数据,但第二个 lambda 既不返回任何值也不抛出任何错误,下面是第二个 lambda 的日志,并以粗体突出显示 console.log 信息

INIT_START 运行时版本:nodejs:20.v15 运行时版本 ARN:arn:aws:lambda:us-east-2::runtime:0856f5d760b75612d4aa6b5feda50bafc1ce3ba07c036cbd0abc585dc28fb870 开始请求 ID:85af3fa6-2044-4664-9d67-9890be0a088a 版本:$LATEST 2024-02-16T10:59:14.484Z 85af3fa6-2044-4664-9d67-9890be0a088a GetLegalDashBoardData 内的信息 2024-02-16T10:59:14.523Z 85af3fa6-2044-4664-9d67-9890be0a088a INFO 内部服务连接字符串 2024-02-16T10:59:14.524Z 85af3fa6-2044-4664-9d67-9890be0a088a ConnectToDatabase 内的信息 2024-02-16T10:59:14.726Z 85af3fa6-2044-4664-9d67-9890be0a088a 返回前 ConnectToDatabase 内的信息 2024-02-16T10:59:14.726Z 85af3fa6-2044-4664-9d67-9890be0a088a ConnectToDatabase 后的信息 结束请求 ID:85af3fa6-2044-4664-9d67-9890be0a088a 报告请求 ID:85af3fa6-2044-4664-9d67-9890be0a088a 持续时间:525.35 毫秒 计费持续时间:526 毫秒 内存大小:128 MB 最大已用内存:76 MB 初始化持续时间:191.40 毫秒

这是我尝试过的 DBConnection.ts 代码

    import { IDatabase, IMain } from 'pg-promise';
    import pgpromise from 'pg-promise';

    async function ConnectToDatabase(user: string, password: string, host: string, port: number, database: string): Promise<IDatabase<any>> {
    try {
        console.log("Inside ConnectToDatabase");
        const pgp = pgpromise();
        const connectionOptions = {
            host: host,
            port: port,
            database: database,
            user: user,
            password: password,
        };

        const dbClient = pgp(connectionOptions)
        console.log("Inside ConnectToDatabase before return");
        return dbClient;
    } catch (error) {
        console.error('Error connecting to the database:', error);
        throw error;
    }
}

    export async function ExecuteFunction(query: string, connectionParams: any) {
    try {
        const dbCreds = JSON.parse(connectionParams);
        const plsqlQuery: any = JSON.parse(query)
        const dbInstance = await ConnectToDatabase(dbCreds.user, dbCreds.password, dbCreds.host, dbCreds.port, dbCreds.database);
        console.log(`After ConnectToDatabase`)
        const result = dbInstance.func(plsqlQuery.funcName, plsqlQuery.params);
        return result;
    } catch (error) {
        console.error('ExecuteFunction Error in Fetching Records From the database:', error);
        throw error;
    }
    }

Service.ts 文件,其中调用 dbconnect.ts 方法来连接到数据库并执行函数并返回结果

import { config } from '../../../shared/config/whub_config';
import { ExecuteFunction } from '../../../shared/data_access/whub_data_service';
export async function GetLegalDashBoardData() {
    console.log("Inside GetLegalDashBoardData")
    try {

        const dbCred: any = GetHubDBCredentials();
        const query: any = {
            funcName: `${config.WHUB_LEGAL_SCHEMA}.${config.LEGAL_GET_DASHBOARD_DATA}`,
            params:"test"
        }
        console.log(`Inside Service connectionString`)
        const result = await ExecuteFunction(JSON.stringify(query),JSON.stringify(dbCred));
         return result;
    } catch (error) {
        console.error('Error executing query', error);
        console.log('Error executing query', JSON.stringify(error));
    }
}

抱歉,如果这是一个重复的问题,请帮我解决这个问题,提前感谢

node.js typescript postgresql aws-lambda pg-promise
1个回答
0
投票

既然

func
返回一个 Promise,你调用它时不应该使用
await
吗?

© www.soinside.com 2019 - 2024. All rights reserved.