使用node.js查询dynamoDB表。 DynamoDB 表的键为 Timestamp,由整数表示。在本例中,我将 :timestampStart 保留为 1,将 timestampEnd 保留为 10 作为示例。
var params = {
TableName: "Table2",
KeyConditionExpression:"Timestamp = :ts BETWEEN :timestampStart AND :timestampEnd",
ExpressionAttributeValues: {
":ts":"Timestamp",
":timestampStart": 1,
":timestampEnd": 10
}
};
:ts 不正确,我可以看到这一点。我想返回在 timestampStart 和 timestampEnd 之间找到的时间戳值的任何行。
错误消息:
"errorMessage": "Invalid KeyConditionExpression: Syntax error; token: \"BETWEEN\", near: \":ts BETWEEN :timestampStart\"",
最佳答案
如果 Timestamp
是分区键而不是排序键。那么,你有两个问题:
在 Query 中操作时,您无法对分区键执行比较测试(<、>、BETWEEN、...)。该条件必须对单个分区键值执行相等测试 (=),并且可以选择对单个排序键值执行多个比较测试之一。例如:
KeyConditionExpression: 'HashKey = :hkey 和 RangeKey > :rkey'
您的
KeyConditionExpression
中存在语法错误,显然。请记住,Timestamp
是 reserved word在 DynamoDB 中。因此,您必须使用ExpressionAttributeNames
来实现:
(假设您有一个 Id
分区键和 Timestamp
排序键)
var params = {
TableName: "Table2",
KeyConditionExpression: "Id = :id AND #DocTimestamp BETWEEN :start AND :end",
ExpressionAttributeNames: {
'#DocTimestamp': 'Timestamp'
},
ExpressionAttributeValues: {
":id": "SOME VALUE",
":start": 1,
":end": 10
}
};
关于javascript - 使用 node.js 在值之间查询 DynamoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355776/