1
我想学习AWS DynamoDB并遇到一个看似简单的问题,我找不出来。DynamoDB/Dynalite查询不返回查询与nodejs
我在本地使用在nodejs上运行的Dynalite。 错误如下;
{[ValidationException:无论是KeyConditions或KeyConditionExpression参数必须在请求中指定的] 消息:“要么KeyConditions或KeyConditionExpression参数必须在请求中指定。”, 代码:“ValidationException”, 时间:星期一2015年12月21日17时31分47秒GMT + 0200(SAST), 的requestId: 'RHDFVDXQTI0VZUIRJSLGRZXJFQJQYWGJOGS0B4MUDSX3H3JSVWNR', 的StatusCode:400,可重试 :假, retryDelay:0}
我的表创建如下(为简洁起见,代码被删除);
var params = {
TableName : "test",
KeySchema: [
{ AttributeName: "email", KeyType: "HASH" },
{ AttributeName: "date", KeyType: "RANGE" }
],
AttributeDefinitions: [
{ AttributeName: "email", AttributeType: "S" },
{ AttributeName: "date", AttributeType: "N" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 1,
WriteCapacityUnits: 1
}
}
dynamodb.createTable(params, function(err, data) {
if (err) { console.log(JSON.stringify(err, null, 2)) }
} else { console.log(JSON.stringify(data, null, 2)) }
})
测试数据加载了以下内容;
var params = {
TableName: 'test',
Item: {
"email": lowerCasedEmail,
"date": date,
"amount": amount,
}
}
dynamodbDoc.put(params, function(err, data) {
if (err){
console.log(JSON.stringify(err, null, 2))
} else {
console.log(JSON.stringify(data, null, 2))
}
})
然后失败的查询如下;
var params = {
TableName: "test",
KeyConditionExpression: "email = :testmail",
ExpressionAttributeValues: {
":testmail": "[email protected]"
}
}
dynamodbDoc.query(params, function(err, data) {
if (err) { console.log(err) }
else {
if (Object.keys(data).length === 0) {
console.log('Nothing found.')
} else { console.log(data) }
}
})
对于这个问题的状态,我正在关注[这个问题](https://github.com/mhart/dynalite/issues/24)。 –