DynamoDB scan not finding record

0

I have a lambda node function that is performing a scan against DynamoDB, it does not return an item.

var params = {
        TableName: REFERRER_TABLE,
        FilterExpression: "messageId = :a",
        ExpressionAttributeValues: {
          ":a": {
            S: messageId
          }
        }
};

dynamoDb.scan(params, function(error, leadData) { ...

returns:

{
    "body": {
        "Items": [],
        "Count": 0,
        "ScannedCount": 2
    },
    "query": {
        "TableName": "lead-data-dev",
        "FilterExpression": "messageId = :a",
        "ExpressionAttributeValues": {
            ":a": {
                "S": "1aa94a6b-6b54-46e6-838d-5781d223f673"
            }
        }
    }
}

I have tested the params in DynamoDB JavaScript Shell and it works expected. I have also successfully tried via AWS CLI

I'm out of ideas. What am I doing wrong?

Edited by: lt-david on Jun 27, 2019 4:21 AM

質問済み 5年前801ビュー
2回答
0

managed to get to the bottom of this:

{
    "body": {
        "Items": [],
        "Count": 0,
        "ScannedCount": 2
    },
    "query": {
        "TableName": "lead-data-dev",
        "FilterExpression": "messageId = :a",
        "ExpressionAttributeValues": {
            ":a":  "1aa94a6b-6b54-46e6-838d-5781d223f673"
        }
    }
}

the ExpressionAttributeValues should not have a type, it's odd that it works on the JavaScript Shell and CLI

回答済み 5年前
0

Hi

I am glad you could fix the query to return items.
You can always refer to our documentation for Scan in node.js, https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.04.html#GettingStarted.NodeJs.04.Scan using which you can understand ways to construct the API parameters.

I hope this helps going forward.

Regard,
Almas

AWS
回答済み 5年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ