我有一个大约700个项目的json文件,需要在DynamoDB表中插入。我目前正在使用transactWrite,但是插入所有这些项花费的时间太长。我该如何使用batchWrite,如果超过25个项目,然后等待并再次运行该功能,直到所有项目都被插入?
data.forEach(async item => {
const params = {
TransactItems: [
{
Put: {
Item: {
pk: `User_${id}`,
sk: 'v0_User_Info',
val: item.User,
editTimeStamp: `${+new Date()}`,
latest: 1,
},
TableName: 'ddb-table',
},
},
{
Put: {
Item: {
pk: `User_${id}`,
sk: 'v1_User_Info',
user: item.User,
editTimeStamp: `${+new Date()}`,
},
TableName: 'ddb-table',
},
},
],
};
await docClient.transactWrite(params).promise()
.then(response => console.log(response))
.catch(err => console.table(err))
})
};
答案 0 :(得分:0)
batchWriteItem返回一个名为UnprocessedItems的字段,其中包含无法处理且应重试的项目。如果此列表为空,则所有内容均已成功写入。 UnprocessedItems
与批处理请求的格式完全相同,因此您应该可以将其直接传递给新的批处理请求。
有关循环和重试UnprocessedItems
的一些示例代码,请将此answer找出类似的问题。