Javascript 在值之间使用node.js查询DynamoDB
使用node.js查询dynamoDB表。DynamoDB表具有Timestamp键,由整数表示。在本例中,我留下了一个示例:timestampStart为1,timestampEnd为10Javascript 在值之间使用node.js查询DynamoDB,javascript,node.js,amazon-web-services,amazon-dynamodb,aws-lambda,Javascript,Node.js,Amazon Web Services,Amazon Dynamodb,Aws Lambda,使用node.js查询dynamoDB表。DynamoDB表具有Timestamp键,由整数表示。在本例中,我留下了一个示例:timestampStart为1,timestampEnd为10 var params = { TableName: "Table2", KeyConditionExpression:"Timestamp = :ts BETWEEN :timestampStart AND :timestampEnd", Expres
var params = {
TableName: "Table2",
KeyConditionExpression:"Timestamp = :ts BETWEEN :timestampStart AND :timestampEnd",
ExpressionAttributeValues: {
":ts":"Timestamp",
":timestampStart": 1,
":timestampEnd": 10
}
};
ts不正确,我可以看到这一点。我想返回在Timestamp start和Timestamp end之间找到的时间戳值为的任何行
错误消息:
errorMessage:无效的KeyConditionExpression:语法错误;
令牌:\BETWEEN\,near:\:ts BETWEEN:timestampStart\
如果时间戳是分区键而不是排序键。那么,你有两个问题:
在操作中,您不能在…之间执行比较测试。。。在分区键上。该条件必须对单个分区键值执行相等性测试=并且(可选)对单个排序键值执行多个比较测试之一。例如:
KeyConditionExpression:'HashKey=:hkey和RangeKey>:rkey'
显然,您的KeyConditionExpression中存在语法错误。请记住,时间戳在DynamoDB中是一个标记。因此,您必须使用ExpressionAttributeNames:
假设您有一个Id分区键和时间戳排序键
如果时间戳是分区键而不是排序键。那么,你有两个问题:
在操作中,您不能在…之间执行比较测试。。。在分区键上。该条件必须对单个分区键值执行相等性测试=并且(可选)对单个排序键值执行多个比较测试之一。例如:
KeyConditionExpression:'HashKey=:hkey和RangeKey>:rkey'
显然,您的KeyConditionExpression中存在语法错误。请记住,时间戳在DynamoDB中是一个标记。因此,您必须使用ExpressionAttributeNames:
假设您有一个Id分区键和时间戳排序键
如果我使用时间戳作为分区键,那么用时间戳作为排序键创建二级全局索引会克服这里的问题吗?然后,我可以创建一个等式语句,通过添加一个辅助索引来解决。如果我将时间戳作为分区键,那么创建一个将时间戳作为排序键的辅助全局索引是否可以克服这里的问题?然后我可以创建一个等式语句,通过添加二级索引来解决
var params = {
TableName: "Table2",
KeyConditionExpression: "Id = :id AND #DocTimestamp BETWEEN :start AND :end",
ExpressionAttributeNames: {
'#DocTimestamp': 'Timestamp'
},
ExpressionAttributeValues: {
":id": "SOME VALUE",
":start": 1,
":end": 10
}
};