【问题标题】:DynamoDB Scan with Lambda not returning elements使用 Lambda 的 DynamoDB 扫描不返回元素
【发布时间】:2021-02-23 02:40:15
【问题描述】:

我有一个带有以下代码的 Lambda:

// Load the AWS SDK for Node.js.
var AWS = require("aws-sdk");
// Set the AWS Region.
AWS.config.update({ region: "us-east-2" });

 
exports.handler =  function(event, context, callback) {
    // Create DynamoDB service object.
    var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });
    
    var params = {
       TableName: "Ranking",
       ProjectionExpression: "#username, Score, Duration",
       FilterExpression: "#username = :username",
       ExpressionAttributeNames: {
          "#username": "Username",
       },
       ExpressionAttributeValues: {
            ":username": {
               S: 'Alberto'
            },
       }
    };
    
    
    
    let toReturn = [];
    ddb.scan(params, function (err, data) {
      if (err) {
        toReturn = err
      } else {
        toReturn = data.Items;
      }
    });
    let response = {
        statusCode: 200,
        body: JSON.stringify(toReturn)
    };
    callback(null, response)
};

但我总是将[] 视为响应...

我当前的数据库有以下记录:

所以我的问题是……为什么我不拿回那件物品?

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda amazon-dynamodb


    【解决方案1】:

    由于您使用的是回调,因此您的代码应如下所示。还有Duration是保留关键字,所以也需要修改如下:

    // Load the AWS SDK for Node.js.
    var AWS = require("aws-sdk");
    // Set the AWS Region.
    AWS.config.update({ region: "us-east-2" });
     
    exports.handler =  function(event, context, callback) {
        // Create DynamoDB service object.
        var ddb = new AWS.DynamoDB({ apiVersion: "2012-08-10" });
    
        var params = {
          TableName: "Ranking",
          FilterExpression: "#username = :username",
          ProjectionExpression: "#username, Score, #duration",
          ExpressionAttributeNames: {
              "#username": "Username",
              "#duration": "Duration",          
          },
          ExpressionAttributeValues: {
                ":username": {
                  S: 'Alberto'
                },
          }
        };    
        
        ddb.scan(params, function (err, data) {
          if (err) {
            callback(null,  err)  
          } else {
            callback(null,  data.Items)  
          }
        });
    
    };
    

    【讨论】:

    • 伙计,我可以为你所有的答案投票吗?或者 idk,送你一份礼物?
    • @Berto99 我很好,谢谢。很高兴它解决了:-)
    猜你喜欢
    • 2016-10-15
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多