如何在 Dynamoose.js 中使用现有的 DynamoDB 表

问题描述

我们正在使用 terraform 在 AWS 中创建 DynamoDB 表。

我们的应用程序是一个 nest.js 应用程序,使用 nestjs-dynamoose 并部署为 Lambda 函数。 lambda 函数启动时没有任何错误。 dynamoose 中的 create 选项设置为 false。

当试图访问创建的表时 this.model.get([...]) 永远不会完成:

const user = await this.model.get({id: instanceId});
console.log(user);
if (user) {
  return await this.model.update({
    value: token,id: instanceId,});
} else {
  return await this.model.create({id: instanceId,value: token});
}

如果我们不使用 terraform 创建表并让 dynamoose 创建表,一切都会顺利进行。

我们如何使用来自 dynamoose 的现有表?

解决方法

对于 Models,您可以设置两个设置:createwaitForActive。听起来您的表格已完全创建、处于活动状态且可以使用。

如果您将这两个设置都设置为 false,这应该会如您所愿。

以下是实现此目的的一些代码示例:

const CatSchema = new dynamoose.Schema({"id": String,"age": Number});
const Cat = dynamoose.model("Cat",CatSchema,{
    "create": false,"waitForActive": false
});