gpt4 book ai didi

javascript - 使用 node.js 在值之间查询 DynamoDB

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:09 25 4
gpt4 key购买 nike

使用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 是分区键而不是排序键。那么,你有两个问题:

  1. Query 中操作时,您无法对分区键执行比较测试(<、>、BETWEEN、...)。该条件必须对单个分区键值执行相等测试 (=),并且可以选择对单个排序键值执行多个比较测试之一。例如:

    KeyConditionExpression: 'HashKey = :hkey 和 RangeKey > :rkey'

  2. 您的 KeyConditionExpression 中存在语法错误,显然。请记住,Timestampreserved 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com