在使用 AppSync 的 BatchPutItem 操作时,如果出现“键上的条件数量无效”错误,这意味着你在对 DynamoDB 表执行批量写操作时指定了无效的条件数量。
解决此问题的方法是检查你的代码,确保对于每个要写入的项目,你只指定了有效的条件数量。以下是一个代码示例:
const AWS = require('aws-sdk');
const appsync = new AWS.AppSync();
const params = {
TableName: 'YourTableName',
Items: [
{
// 第一个要写入的项目
PutRequest: {
Item: {
// 项目的属性
id: 'item1',
name: 'Item 1',
// 其他属性...
},
},
},
{
// 第二个要写入的项目
PutRequest: {
Item: {
// 项目的属性
id: 'item2',
name: 'Item 2',
// 其他属性...
},
// 无效的条件
ConditionExpression: '#attr1 = :value1 AND #attr2 = :value2',
ExpressionAttributeNames: {
'#attr1': 'attribute1',
'#attr2': 'attribute2',
},
ExpressionAttributeValues: {
':value1': 'value1',
':value2': 'value2',
},
},
},
],
};
appsync.batchPutItem(params, (err, data) => {
if (err) console.log(err, err.stack);
else console.log(data);
});
在上述示例中,第一个要写入的项目没有指定任何条件,而第二个项目在 PutRequest
中指定了一个无效的条件。要解决此问题,你可以删除无效的条件或指定一个有效的条件。
请注意,DynamoDB 支持条件表达式来确保只有满足指定条件的项目才会被写入。因此,在使用 BatchPutItem 操作时,确保你只对需要的项目指定条件,并确保这些条件是有效的。