Мои объекты в Dynamodb выглядят примерно так:
{
userId: "GEFOeE8EsaWmq4NQ3oh7tbeVkLx1",
url: 'objectURL',
object: {}
}
У меня есть этот простой кусок кода для удаления объекта, когда пользователь, которому принадлежит объект, запрашивает удаление. Кстати, пользовательский аргумент - это проанализированный JWT.
export async function deleteObject(user, url) {
let params = {
TableName: OBJECTS_TABLE,
Key: {
url: url,
},
ConditionExpression: `userId = :uid`,
ExpressionAttributeValues: {
":uid": {
S: user.sub
}
}
};
let deleteResult = await dynamoDb.delete(params).promise();
return deleteResult;
}
Проблема в том, что она не работает, и я убедился, что проблема связана с условным выражением, изменив =
на <>
. Я просто получаю это:
ConditionalCheckFailedException: The conditional request failed
Я уверен, что решить проблему не составит труда, но у меня почти нет информации
Вопросы:
- Почему выражение условия не выполняется? Все выглядит хорошо, и это должно работать. Верно?
- Как мне лучше отладить эту проблему?