【发布时间】:2015-11-21 19:11:29
【问题描述】:
我正在 DynamoDB 中创建一个表和 GSI,使用这些参数,根据文档:
configId 是表的主键,我使用publisherId 作为 GSI 的主键。 (为简洁起见,我删除了一些不必要的配置参数)
var params = {
TableName: 'Configs',
KeySchema: [
{
AttributeName: 'configId',
KeyType: 'HASH',
}
],
AttributeDefinitions: [
{
AttributeName: 'configId',
AttributeType: 'S',
},
{
AttributeName: 'publisherId',
AttributeType: 'S',
}
],
GlobalSecondaryIndexes: [
{
IndexName: 'publisher_index',
KeySchema: [
{
AttributeName: 'publisherId',
KeyType: 'HASH',
}
]
}
]
};
我正在使用这个查询这个表:
{ TableName: 'Configs',
IndexName: 'publisher_index',
KeyConditionExpression: 'publisherId = :pub_id',
ExpressionAttributeValues: { ':pub_id': { S: '700' } } }
但我不断收到错误:
“ValidationException:一个或多个参数值无效:条件参数类型与架构类型不匹配”
在文档中,它指定主要的KeyType 可以是HASH 或RANGE,并且您在AttributeDefinitions 字段中设置AttributeType。我将publisherId 作为String 发送,不确定我在这里缺少什么。
问题是我创建表的方式,还是我查询的方式? 谢谢
【问题讨论】:
-
我会在“配置”上调用 describeTable,以仔细检查二级索引是否已按预期创建。
标签: node.js amazon-dynamodb aws-sdk