如何在node.js AWS Dynamodb中使用batchWriteItem

rol*_*olo 1 amazon-web-services node.js amazon-dynamodb aws-lambda

我对AWS有点陌生,因此在尝试使用node.js开发一个简单的Lambda函数时遇到了一些问题。在发电机数据库中,我有一个名为“ Game”的表,其属性为“ gamepk”,“ user”,“ result”。在Lambda函数的一个示例中,我想插入“游戏”元素的集合(集合中元素的数量可以变化)。我一直在阅读一些教程,它说我应该使用batchWriteItem,但是由于Game元素的集合是可变的,所以我不知道该如何进行。

有人可以在节点js中编写一个函数来解决我的问题吗?谢谢你的时间。

lambda函数接收的JSON示例如下:

{
    "games": [{
            "gamepk": "1",
            "user": "rolo",
            "result": "1-0"

        },
        {
            "gamepk": "2",
            "user": "jhon",
            "result": "1-1"
        }
    ]

}
Run Code Online (Sandbox Code Playgroud)

Cha*_*ias 11

这应该为您提供所需的东西。

  1. 创建一个新的Lambda函数
  2. 选择节点版本6
  3. 选择一个角色或创建一个具有DynamoDB访问权限的新角色!
  4. 在Web控制台中打开“创建的函数”
  5. 将代码段波纹管粘贴到Cloud 9 Editor中

    const AWS = require('aws-sdk/global');
    
    exports.handler = (event, context, callback) => {
    // The event parameter is the input to your lambda function
    console.log(JSON.stringify(event));
    let lambdaInput = event['PROPERTY_NAME_DEFINED_IN_POST'];
    let games = [];
    let documentClient = new AWS.DynamoDB.DocumentClient();
    
    lambda.forEach(item => {
      games.push({
        PutRequest: {
          Item: {
            gamepk: item['gamepk'],
            user: item['user'],
            result: item['result']
          }
        }
      });
    });
    
    let params = {
        RequestItems: {
            'TABLE_NAME': games
        }
    };
    
    documentClient.batchWrite(params, function(err, data) {
        if (err) {
            callback(err);
        } else {
            callback(null, data);
        }
    });
    }
    
    Run Code Online (Sandbox Code Playgroud)

保存功能,然后您将要选择顶部的下拉菜单,其中显示“选择测试事件”,然后选择“配置测试事件”。

这将打开一个新对话框,只需保存主文本区域中的JSON,然后为测试指定名称并保存即可。

现在,从“选择测试事件”下拉列表中选择您刚刚进行的测试,然后单击右上角的“测试”。

该文档可在AWS Javascript SDK中找到


JxD*_*gel 5

作为答案的额外帮助,您可以使用环境变量并按以下方式使用它:

const MI_TABLE = process.env.MI_TABLE

  let params = {
      RequestItems: {
           [ MI_TABLE ] : games
      }
  };

return await batchWrite(params);
Run Code Online (Sandbox Code Playgroud)