Я новичок в DynamoDB.У меня есть таблица DynamoDB под названием «детские профили», в которой перечислены дочерние профили для пользователя (первичный ключ раздела «userId», первичный ключ сортировки «childId»).У меня есть вторая таблица с именем 'kids-tasks', в которой перечислены задачи для дочернего элемента (первичный ключ раздела 'childId', первичный ключ сортировки 'taskId').Я хотел бы атомарно добавить элемент в таблицу «kids-tasks» только в том случае, если в таблице «kids-profile» существует «childId».
Я пытаюсь использовать метод transactWrite класса AWS.DynamoDB.DocumentClient (https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html) для достижения этой цели, но не могу заставить его работать. Сначала, когда я пытаюсь добавитьConditionCheck для TransactionItems, он говорит, что «TransactItems может содержать только один из Check, Put, Update или Delete». Поэтому я изменил «ConditionCheck» на «Check», предполагая, что это правильно, хотя это не упоминается в документацииВо-вторых, когда я выполняю его, он добавляет задачу в таблицу «kids-tasks» независимо от того, существует ли «childId» в таблице «kids-profile».
const params = {
TransactItems: [
{
Check: {
TableName: "kids-profiles",
Key: {
userId: userId,
childId: childId,
},
ConditionExpression: "attribute_exists(childId)",
},
Put: {
TableName: "kids-tasks",
Item: {
childId: childId,
taskId: uuid.v1(),
title: title,
}
}
}
]
};
try
{
await dynamoDb.transactWrite(params).promise();
console.log("Success!");
}
catch (error)
{
console.log("Error");
}