dynamo.updateItem(...).promise 不是函数

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

我指的是这里的CDK教程https://cdkworkshop.com/20-typescript/40-hit-counter/200-handler.html

但是我的代码如下

await dynamo.updateItem({
    TableName: process.env.HITS_TABLE_NAME,
    Key: { path: { S: event.path } },
    UpdateExpression: 'ADD hits :incr',
    ExpressionAttributeValues: { ':incr': { N: '1' } }
}).promise();

将返回此错误

dynamo.updateItem(...).promise is not a function
。看来教程已经过时了..我应该更改什么来修复代码?

aws-lambda amazon-dynamodb
1个回答
0
投票

它已经过时了,是的,Lambdas 运行时现在包括 JavaScript SDK V3,但您的编码为 V2。

如果您使用的是 V3 JavaScript SDK,则 updateItem 将返回 dead 的承诺。

这是一个例子

const { DynamoDBClient } = require("@aws-sdk/client-dynamodb");
const { DynamoDBDocumentClient, UpdateCommand } = require("@aws-sdk/lib-dynamodb");

...
...


await ddbDocClient.send(
      new UpdateCommand({
        TableName: "RetailDatabase",
        Key: {
          pk: "[email protected]",    // Partition key
          sk: "metadata",                 // Sort key
        },
        ExpressionAttributeNames: {
          "#n": "name",
        },
        UpdateExpression: "set #n = :nm",
        ExpressionAttributeValues: {
          ":nm": "Big Jim Bob",
        },
        ReturnValues: "ALL_NEW",
      })
  );
© www.soinside.com 2019 - 2024. All rights reserved.