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 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南