Node.js DynamoDB中的查询请求get中的键

Node.js DynamoDB中的查询请求get中的键,node.js,amazon-dynamodb,dynamodb-queries,dynamo-local,Node.js,Amazon Dynamodb,Dynamodb Queries,Dynamo Local,我试图在本地DynamoDB中执行此查询,但我不知道为什么它不起作用 错误: 无法读取项目。错误JSON:{ “消息”:“查询条件缺少关键架构元素”, “代码”:“ValidationException”, “时间”:“2020-04-13T23:49:24.297Z”, “请求ID”:“99bcabdb-7168-4b26-8056-74482d92ac42”, “状态代码”:400, “可检索”:错误, “retryDelay”:23.68974772992818 } 查询 var pa

我试图在本地DynamoDB中执行此查询,但我不知道为什么它不起作用

错误

无法读取项目。错误JSON:{ “消息”:“查询条件缺少关键架构元素”, “代码”:“ValidationException”, “时间”:“2020-04-13T23:49:24.297Z”, “请求ID”:“99bcabdb-7168-4b26-8056-74482d92ac42”, “状态代码”:400, “可检索”:错误, “retryDelay”:23.68974772992818 }

查询

  var params = {
    TableName: TESTE,
    IndexName: 'indexCNPJ',
    KeyConditionExpression: 'cep = :cep',
    ExpressionAttributeValues: {
      ':cep': cep
    }
  };

  docClient.query(params, function (err, data) {
    if (err) {
      console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
      console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
      res.status(200).json(data)
    }
  }); ```

**Table** 

   ``` var params = {
    TableName : "TESTE",
    KeySchema: [
        { AttributeName: "CEP", KeyType: "HASH"},
        { AttributeName: "CNPJ", KeyType: "RANGE"}
    ],
    AttributeDefinitions: [
        { AttributeName: "CEP", AttributeType: "N" },
        { AttributeName: "CNPJ", AttributeType: "S" }
    ],
    GlobalSecondaryIndexes: [
        {
          IndexName: 'indexCNPJ',
          KeySchema: [
            { AttributeName: 'CEP', KeyType: 'HASH' },
            { AttributeName: 'CNPJ', KeyType: 'RANGE' }
          ],
          Projection: {
            ProjectionType: 'ALL'
          },
          ProvisionedThroughput: {
            ReadCapacityUnits: 10,
            WriteCapacityUnits: 10
          }
        }
      ],
    ProvisionedThroughput: {
        ReadCapacityUnits: 10,
        WriteCapacityUnits: 10
    }
};

dynamodb.createTable(params, function(err, data) {
    if (err) {
        console.error("Unable to create table. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        console.log("Created table. Table description JSON:", JSON.stringify(data, null, 2));
    }
});

我唯一想要的就是调用服务时只传递zip参数。因为,不可能仅使用邮政编码创建表,因为散列是指记录中存在重复项


首先,我只有cep参数。有人知道我如何解决这个问题吗?

查询条件缺少键模式元素
这意味着您的查询不包括哈希键

您的
indexCNPJ
索引架构是:

KeySchema: [
            { AttributeName: 'CEP', KeyType: 'HASH' },
            { AttributeName: 'CNPJ', KeyType: 'RANGE' }
          ],
这意味着,
CEP
是散列键。再次检查您的查询

...
KeyConditionExpression: 'cep = :cep',
...
它不包括哈希键-
CEP
。您使用
cep
而不是
cep
,然后返回错误

让我们更正
KeyConditionExpression
属性中的属性名称:

...
KeyConditionExpression: 'CEP = :cep',
...

顺便说一句,
indexCNPJ
index与表索引模式具有相同的模式,为什么需要创建与表索引相同的GSI索引?我认为没有必要。在这种情况下,只需使用不带GSI的表索引进行查询

谢谢你,朋友,这只是大写的参数,我删除了索引