Node.js DynamoDB中的查询请求get中的键
我试图在本地DynamoDB中执行此查询,但我不知道为什么它不起作用 错误: 无法读取项目。错误JSON:{ “消息”:“查询条件缺少关键架构元素”, “代码”:“ValidationException”, “时间”:“2020-04-13T23:49:24.297Z”, “请求ID”:“99bcabdb-7168-4b26-8056-74482d92ac42”, “状态代码”:400, “可检索”:错误, “retryDelay”:23.68974772992818 } 查询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
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的表索引进行查询 谢谢你,朋友,这只是大写的参数,我删除了索引