簡體   English   中英

在特定日期之間查詢 DynamoDB -NodeJs

[英]Query DynamoDB between certain dates -NodeJs

我正在嘗試在 Dynamo DB 中查詢兩個日期之間的 person_id。 我對以下代碼有錯誤:

請注意,表的主鍵是 (event_id),但我不確定如何/在哪里使用它?

 var params = { TableName: "tableName", IndexName: "person_id-event_date-index", FilterExpression: "#person_id =:person_id", KeyConditionExpression: "#person_id =:person_id and #event_date BETWEEN:from AND:to", ExpressionAttributeNames: { "#person_id": "person_id", "#event_date": "event_date" }, ExpressionAttributeValues: { ":person_id": person_id, ":from": start_date, ":to": end_date } } documentClient.query(params, function(err, data) { if (err) { console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); callback(new Error(JSON.stringify(err))) } else { callback(null, data); } });

任何人都可以請檢查如何使這個工作?

非常感謝

簡短的回答是,除非表設置了一些允許此類查詢的GSI (全局二級索引),否則您不能這樣做。

進行查詢時必須傳遞主鍵值,否則不能進行查詢。

考慮到您要基於不同的列而不是主鍵進行查詢,您需要查看是否有定義的索引

  • PrimaryKey = person_id 和
  • RangeKey = event_date

如果注釋定義了這樣的索引,您可能會依賴scan ,但不建議這樣做。

這是修復代碼:

 var params = { TableName: "tableName", IndexName: "person_id-event_date-index", KeyConditionExpression: "#person_id =:person_id and #event_date BETWEEN:from AND:to", ExpressionAttributeNames: { "#person_id": "person_id", "#event_date": "event_date" }, ExpressionAttributeValues: { ":person_id": person_id, ":from": start_date, ":to": end_date } } documentClient.query(params, function(err, data) { if (err) { console.error("Unable to query. Error:", JSON.stringify(err, null, 2)); callback(new Error(JSON.stringify(err))) } else { callback(null, data); } }); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM