node.js - 如何修复“同一连接的重复数据库对象”dynamodb 警告
问题描述
我有一个使用 nodejs 和 dynamoDB 运行的 lambda,我可以在 cloudwatch 中看到以下日志,我不确定如何解决这个问题?
undefined WARN WARNING: Creating a duplicate database object for the same connection.
lambda 中的代码使用以下内容
const dynamoDbClient = new DynamoDb(config.dynamoDb, logger);
interface dynamoDB {
{
region: string;
endpoint?: string;
accessKeyId?: string;
secretAccessKey?: string;
convertEmptyValues?: boolean;
}
下面包含查询 dynamodb 并使用连接的代码
new AWS.DynamoDB.DocumentClient(this.config).put(..)
解决方案
我的猜测是你没有检查你是否已经有一个连接,所以我的 MySQL 类看起来像这样:
export default class MySQL {
constructor() {
this.connection = null;
}
to() {
return promise.then((data) => {
return [null, data]
}).catch(err => [err])
}
async getConnection() {
if (this.connection === null || this.connection.state === 'disconnected') {
return this.createConnection();
}
return this.connection;
}
async createConnection() {
this.connection = await mysql.createConnection({
host: 'dbhost',
user: 'user',
password: 'password',
database: 'db',
});
return this.connection;
}
async query(sql, params) {
await this.getConnection();
let err;
let rows;
[err, rows] = await this.to(this.connection.query(sql, params));
if (err) {
console.log(err);
return false;
}
return rows;
}
}
所以在查询时,它会检查它是否是一个重用的 lambda 容器,如果不是则创建一个连接。
推荐阅读
- ruby - 如何在 ruby 测试中正确使用正则表达式
- testing - 如何模拟或模拟 gRPC API?
- c# - 实体框架:从集合中删除所有实体
- angular - nativescript 抽屉导航角度 - 如何导航?
- jquery - jQuery 验证没有按预期工作。这可能是什么原因?
- c# - 使用 REGValue 在任务栏中创建 Windows 工具栏
- dart - Flutter:为 Painter 类设置背景图像
- java - 在 Windows 10 上构建 SonarQube 时出现问题
- javascript - 在内容可编辑的 div 中设置插入符号位置
- c# - Client.PostAsync(使用 Json)获取 400 错误请求