Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DynamoDB-如何使用任何分区键获取所有项,但使用一系列排序键值?_Javascript_Amazon Dynamodb - Fatal编程技术网

Javascript DynamoDB-如何使用任何分区键获取所有项,但使用一系列排序键值?

Javascript DynamoDB-如何使用任何分区键获取所有项,但使用一系列排序键值?,javascript,amazon-dynamodb,Javascript,Amazon Dynamodb,我有一张DynamoDB桌子,里面有一堆口袋妖怪,嘿嘿,我正试着按等级把它们弄出来 我有一个GSI,pokemon(名称、pikachu等)作为分区键,level(数值)作为排序键 我想询问某个级别的每个人。这是我的密码: db.query({ TableName: "pokemon", IndexName: "level", KeyConditionExpression: `lv > :zero`, ExpressionAttrib

我有一张DynamoDB桌子,里面有一堆口袋妖怪,嘿嘿,我正试着按等级把它们弄出来

我有一个GSI,pokemon(名称、pikachu等)作为分区键,level(数值)作为排序键

我想询问某个级别的每个人。这是我的密码:

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"
  }
}