TypeError:无法读取属性' id'未定义 - AWS Lambda

时间:2016-09-20 07:57:08

标签: javascript amazon-web-services lambda aws-lambda

使用AWS Lambda时出现问题

  

TypeError:无法读取属性' id' exports.handler中的undefined(/var/task/index.js:19:28)

这是我的代码:

var AWS = require("aws-sdk");
var dynamoDBConfiguration = {
"region" : "us-west-2", 
"endpoint" : "dynamodb.us-west-2.amazonaws.com"
};

AWS.config.update(dynamoDBConfiguration);

var docClient = new AWS.DynamoDB.DocumentClient();


exports.handler = function(event, context, callback) {

var params = {
    TableName: "User",
    ProjectionExpression: "id, password",
    FilterExpression: "id = :id and password = :password",
    ExpressionAttributeValues: {
         ":id" : event.body.id,
         ":password" : event.body.password
    }
};

docClient.scan(params, onScan);

function onScan(err, data) {
    if (err) {
        console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
} 
else 
{
    console.log("Scan succeeded.");
    context.succeed(data.Items);

    // continue scanning if we have more movies
    if (typeof data.LastEvaluatedKey != "undefined") {
        console.log("Scanning for more...");
        params.ExclusiveStartKey = data.LastEvaluatedKey;
        docClient.scan(params, onScan);
    }
}
}
}

然而,今天下午,当我跑的时候,跑得很好。

你能帮助我解决这个错误吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

FilterExpression:"#id = :id and #password = :password",
    ExpressionAttributeNames: {
        "#id":"Your particular id",
        "#password":"your password"
    },

您也可以在代码的参数中使用ExpressionAttributesNames。我想你可能只是在使用ExpressionAttributesValues。

答案 1 :(得分:0)

这意味着 event.body.id 未定义。使用 event.id 而不是event.body.id。

不应该是这样吗?

ExpressionAttributeValues: {
         ":id" : event.id,
         ":password" : event.password
    }