Javascript DynamoDB-如何使用任何分区键获取所有项,但使用一系列排序键值?
我有一张DynamoDB桌子,里面有一堆口袋妖怪,嘿嘿,我正试着按等级把它们弄出来 我有一个GSI,pokemon(名称、pikachu等)作为分区键,level(数值)作为排序键 我想询问某个级别的每个人。这是我的密码:Javascript DynamoDB-如何使用任何分区键获取所有项,但使用一系列排序键值?,javascript,amazon-dynamodb,Javascript,Amazon Dynamodb,我有一张DynamoDB桌子,里面有一堆口袋妖怪,嘿嘿,我正试着按等级把它们弄出来 我有一个GSI,pokemon(名称、pikachu等)作为分区键,level(数值)作为排序键 我想询问某个级别的每个人。这是我的密码: db.query({ TableName: "pokemon", IndexName: "level", KeyConditionExpression: `lv > :zero`, ExpressionAttrib
db.query({
TableName: "pokemon",
IndexName: "level",
KeyConditionExpression: `lv > :zero`,
ExpressionAttributeValues: {
":zero": 0
}
}, function (error, reply) {
return console.log(error || reply)
})
我得到了这个错误
ValidationException:查询条件缺少关键模式元素:pokemon
我也试过这个
db.query({
TableName: "pokemon",
IndexName: "level",
KeyConditionExpression: `pokemon = not_null and lv > :zero`,
ExpressionAttributeValues: {
":name": 'not_null',
":zero": 0
}
}, function (error, reply) {
return console.log(error || reply)
})
并获取以下错误:
ValidationException:KeyConditionExpression中的条件无效:一个条件中使用了多个属性名称
我似乎不能为分区键取任何值。它一直在对我大喊大叫:(您需要使用
KeyConditionExpression
参数为分区键提供特定的值
您的查询应该如下所示(在伪代码中):
明白了。所以,如果不进行扫描,我就无法按照数据当前所在的级别对列表进行排序。我不确定我是否遵循了。查询结果将按排序键排序,因此它们将按顺序返回。没关系。只是一个测试数据库,所以不重要。仍在学习。分区键是类型(心理等),排序键是口袋妖怪的名字(pikachu,等等),所以每个口袋妖怪中只能有一个。所以当我把它们从GSI中取出时,它们不会按级别排序。除非我做了一些我没有注意到的错误。
{
"TableName": "pokem",
"IndexName": "level",
"KeyConditionExpression": "#name = :name And #level > :level",
"ExpressionAttributeValues": {
":name": "name",
":level": "level"
},
"ExpressionAttributeNames": {
"#name": "pikachu",
"#level": "0"
}
}