我编写了以下代码,根据名为id的密钥从Dynamodb表中返回一行。
var db = new AWS.DynamoDB();
var params = {
AttributesToGet: [
"dealername"
],
TableName : "syv_dealer",
Key : {
"id" : {
"S" : "1"
}
}
}
db.query(params, function(err, data) {
if (err) {
console.log(err); // an error occurred
} else {
console.log(data); // successful response
}
});
我将数据写入表中的代码工作正常,但上面的代码仍然生成以下错误:在params中找到意外的键'Key'
该表存在,表中有一个值为“1”的id属性。
我查看了我能找到的所有例子,并且已经将params语句改变了一百次,但没有任何效果。我相信这很简单,但任何帮助都会受到赞赏。
答案 0 :(得分:0)
这是失败的,因为Key
是用于向该API提交请求的无效参数。查看DynamoDB Query syntax以确定您可以设置的属性。
执行此查询的正确方法是使用KeyConditionExpression
,如下所示:
var params = {
TableName : "syv_dealer",
KeyConditionExpression: "id = :v1",
ExpressionAttributeValues: {
":v1": {"S": "1"}
},
ProjectionExpression: "dealername"
}
使用ProjectionExpression
代替AttributesToGet
也是指定属性的现代方法。
答案 1 :(得分:0)
谢谢,我已经改变了很多东西,我没有意识到我已经将它从getItem更改为Query。
我的问题始终存在的关键是函数调用是异步的,所以我没有耐心并让回调执行。
我是Node.js的新手,所以我试图弄清楚如何在Web服务调用上检查凭据,并且在我对请求者进行身份验证之前不要继续。在getItem调用上有没有办法使它同步?我意识到我可以在getItem回调中嵌入后面的逻辑,但我真的试图为每个端点使用相同的安全例程。
思想?