Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Lambda未返回元素的DynamoDB扫描_Node.js_Amazon Web Services_Aws Lambda_Amazon Dynamodb - Fatal编程技术网

Node.js Lambda未返回元素的DynamoDB扫描

Node.js Lambda未返回元素的DynamoDB扫描,node.js,amazon-web-services,aws-lambda,amazon-dynamodb,Node.js,Amazon Web Services,Aws Lambda,Amazon Dynamodb,我有一个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 s

我有一个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)
};
然而,我总是将
[]
视为响应

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


所以我的问题是。。。为什么我不能取回该项?

因为您正在使用回调,所以您的代码应该如下所示。另外,
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我很好,谢谢。很高兴它成功了:-)