【发布时间】:2022-08-21 01:44:54
【问题描述】:
我有一个发电机数据库表,我可以通过 lambda 使用节点 js 插入数据。我可以从控制台查询,也可以使用 cli 查询。当使用带有 promise 的查询时,它会因调用错误而出错。它没有抛出任何特定的错误。如果我删除承诺并运行,我可以看到与数据库的连接成功。我也试过 ExpressionAttributeValues: { \":name\": {\"S\":id} },
甚至硬编码 id 和相同问题的值。我究竟做错了什么??
import AWS from \"aws-sdk\"
const dyanamoDB = new AWS.DynamoDB.DocumentClient()
AWS.config.update({ region: \"us-east-1\" })
export const checkIFIDExist = async (id) => {
try {
const params = {
ProjectionExpression: \"String1, String2\",
IndexName: \"String2\",
KeyConditionExpression: \"String2 = :name\",
ExpressionAttributeValues: {
\":name\": id
},
TableName: \'my-table\',
}
const data = await dynamoDB.query(params).promise()
console.log(\"Data:\", data)
return \"success\"
}catch (err) {
throw new Error (`Failed query for ${id} `, err)
}
}
错误:
2022-08-16T20:24:09.210Z c2e0c093-2719-48b8-b0bb-4f38de3ac7b6 ERROR Invoke Error
{
\"errorType\": \"Error\",
\"errorMessage\": \"Failed query for OE0K0I \",
\"stack\": [
\"Error: Failed query for OE0K0I \",
\" at checkIFStepFunctionIDExists (file:///var/task/src/dynamo-query.js:24:15)\",
\" at processTicksAndRejections (internal/process/task_queues.js:95:5)\",
\" at async Runtime.handler (file:///var/task/src/index.js:11:19)\"
]
}
-
发生这种情况时
err的内容是什么?将其打印出来并将其添加到您的帖子中。 -
你真的有一个名为
String2的索引吗?我的意思是,索引当然不应该只是一个字段名。我可能是在说显而易见的。但只是为了确定。 -
是 string2 是一个索引
-
@jarmod 错误内容就是我上面的内容。我知道它没有提供太多信息,这就是让我失望的原因。我在另一个项目中实现了相同的查询,我的老队友仍在使用它。我什至引用了旧的 repo 进行比较,并且没有语法差异
-
请打印
err并将其添加到帖子中。另外,我认为您可能需要更正您对Error() 的使用。而不是简单地将err作为第二个参数传递,我认为它应该是{ cause: err }。
标签: node.js amazon-web-services amazon-dynamodb