DynamoDB DeleteItem 显然不起作用 - 没有给出错误
DynamoDB DeleteItem apparently not working - no error given
我使用 put 和 get 没有问题,但是当涉及到 delete 时,没有任何反应。这是我的代码:
async function resetUserIdDB(userId) {
let params = {
TableName: 'TableName',
"Key": {
"userId": {
"S": userId.toString()
}
}
};
try {
const dbResponse = await ddb.deleteItem(params).promise();
console.log(`dbresponse has params of ${JSON.stringify(params)} and response of ${JSON.stringify(dbResponse)}`);
if (dbResponse.Item) {
console.log(`deleted row with userId of ${userId}`);
return (dbResponse);
}
} catch (err) {
console.log(`user reset failed with ${err}`);
throw new Error(`failed to reset because of ${err}`);
}
}
参数看起来都很好,但我只是得到一个空响应,没有错误,但也没有删除。我在所有其他 dynamodb 操作中使用相同的 .promise()。
有什么想法吗?
当您在 Dynamodb 中删除一个元素而没有任何反应时,这意味着找不到密钥,因此请仔细检查您的密钥。
table 存在,否则你会得到一个错误
com.amazonaws.services.dynamodb.model.ResourceNotFoundException:
Requested resource not found (Service: AmazonDynamoDB; Status Code:
400; Error Code: ResourceNotFoundException; Request ID
例如在 table 中删除:
TABLEXAMPLE 键:{id: "client", sortingKey: "TTN-BPLAN-7129-6114"}
检查id是否存在且正确,排序键是否存在且正确
不确定,但以下内容可能有助于调试:
- 尝试在测试时删除 async/await。
- 在调用 'deleteItem' 后删除 'promise()'(尝试一次测试一件事)。
- 不要从 catch 块中抛出,但是 return 错误。
- "Key" 对象在引号中。它可能不必像 TableName 一样用引号引起来。
基本上,让代码更简单。这将有助于调试。
我刚 运行 遇到了同样的问题。似乎有些 SDK 功能实际上并没有工作,除非您向它们传递一个 callback
参数,即使它是可选的。即使是什么都不做的函数似乎也能正常工作。即
const dbResponse = await ddb.deleteItem(params, () => {}).promise();
我使用 put 和 get 没有问题,但是当涉及到 delete 时,没有任何反应。这是我的代码:
async function resetUserIdDB(userId) {
let params = {
TableName: 'TableName',
"Key": {
"userId": {
"S": userId.toString()
}
}
};
try {
const dbResponse = await ddb.deleteItem(params).promise();
console.log(`dbresponse has params of ${JSON.stringify(params)} and response of ${JSON.stringify(dbResponse)}`);
if (dbResponse.Item) {
console.log(`deleted row with userId of ${userId}`);
return (dbResponse);
}
} catch (err) {
console.log(`user reset failed with ${err}`);
throw new Error(`failed to reset because of ${err}`);
}
}
参数看起来都很好,但我只是得到一个空响应,没有错误,但也没有删除。我在所有其他 dynamodb 操作中使用相同的 .promise()。
有什么想法吗?
当您在 Dynamodb 中删除一个元素而没有任何反应时,这意味着找不到密钥,因此请仔细检查您的密钥。
table 存在,否则你会得到一个错误
com.amazonaws.services.dynamodb.model.ResourceNotFoundException: Requested resource not found (Service: AmazonDynamoDB; Status Code: 400; Error Code: ResourceNotFoundException; Request ID
例如在 table 中删除:
TABLEXAMPLE 键:{id: "client", sortingKey: "TTN-BPLAN-7129-6114"}
检查id是否存在且正确,排序键是否存在且正确
不确定,但以下内容可能有助于调试:
- 尝试在测试时删除 async/await。
- 在调用 'deleteItem' 后删除 'promise()'(尝试一次测试一件事)。
- 不要从 catch 块中抛出,但是 return 错误。
- "Key" 对象在引号中。它可能不必像 TableName 一样用引号引起来。
基本上,让代码更简单。这将有助于调试。
我刚 运行 遇到了同样的问题。似乎有些 SDK 功能实际上并没有工作,除非您向它们传递一个 callback
参数,即使它是可选的。即使是什么都不做的函数似乎也能正常工作。即
const dbResponse = await ddb.deleteItem(params, () => {}).promise();