我指的是这里的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
。看来教程已经过时了..我应该更改什么来修复代码?
它已经过时了,是的,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",
})
);