【发布时间】:2020-12-24 13:47:30
【问题描述】:
我正在使用带有 DynamoDB 的 JS SDK 来获取数据。
我可以使用partition key 和sort key 的简单查询从我的表中获取数据。
我的排序键 sk 有记录 -
Year#Batch#Rate
如果我通过var sk = "2006#CSE#90";,它会返回所有匹配的记录,
要求-我怎样才能得到所有带有year 2006、Batch CSE和Rate =>90的产品
readItem_pbro(){
console.log("inside pbro");
var table2 = "pbro";
var pk = "1";
var sk = "2006#CSE#90";
var params2 = {
TableName: table2,
Key:{
"pk": pk,
"sk": sk
}
};
编辑 1 :: 为分数/评分创建了一个不同的列作为分数。它是数字。
现在我在JS 中的查询是 -
但我收到错误 - ValidationException: The provided key element does not match the schema
readItem_score_filter(){
console.log("inside pbro");
var table2 = "pbro";
var pk = "1"; // string
var sk = "2006#CSE"; // string
var score = 90; //number
var params2 = {
TableName: table2,
Key:{
"pk": pk,
"sk": sk,
FilterExpression:'score >=:score',
}
};
我的FilterExpression 出了什么问题。
编辑 2 :: 添加了关键条件表达式,但问题仍然存在
错误:ValidationException: The provided key element does not match the schema
这是我现在的完整功能:
readItem_score_filter(){
console.log("inside pbro");
var table2 = "pbro";
var pk = "1"; //string
var sk = "2006#CSE"; // string
var score = 90; //number
var params2 = {
TableName: table2,
Key:{
"pk": pk,
"sk": sk,
"score": score,
KeyConditionExpression: 'pk = :pk AND sk=:sk',
FilterExpression: "score >=:score",
}
};
this.user.docClient.get(params2, function(err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
}
附上表格的屏幕截图,以防您需要查看::
【问题讨论】:
-
"2006#CSE#90" - 这个值是一个属性(列)还是三个属性?
-
这是排序键,一列
-
year、batch 和 rate 是不同的列还是只有一列?
-
一栏全部
标签: amazon-web-services amazon-dynamodb