我的 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));
}
}
抱歉,如果这是一个重复的问题,请帮我解决这个问题,提前感谢