AWS Lamdba Dynamo AWS SDK Node.js查询方法问题

时间:2018-06-13 09:57:51

标签: aws-lambda amazon-dynamodb aws-sdk

您好我有以下基于Node.js的Lamdba代码。我无法调用查询方法来检索数据。

输入:{ key: 'value' } - 使用测试事件输入。

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-2'});
var ddb = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});

exports.handler = async (event, context) => {
    const params = {
        TableName: 'Chapter',
        IndexName: 'subjectId-index', // Global Secondary Index
        KeyConditionExpression: 'subjectId = :subjectId',
        ExpressionAttributeValues: {
            ':subjectId': event.key,
        },
    };
    console.log(JSON.stringify(params));
    ddb.query(params, (err, data) => {
        // Console.log('Not executing this part !!!')
        if (err) console.log(err);
        console.log(data);
    });
};

甚至没有调用查询方法或记录任何错误。我真的可以帮忙。

1 个答案:

答案 0 :(得分:-1)

由于您有控制台日志,您可以使用cloudwatch调试代码来检查您的lambda日志。

您可以选择您的lambda,如果您看到任何执行日志,可以单击以获取更多详细信息,您将在那里找到您的控制台日志

调用context.done

您可能尝试的示例程序。我只是写了没试过

var AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-2' });
var ddb = new AWS.DynamoDB.DocumentClient({ apiVersion: '2012-08-10' });

const executeQuery = (params) => {
    return new Promise(function (resolve, reject) {
        ddb.query(params, (err, data) => {
            if (err) reject(err);
            resolve(data);
        });
    });
}
exports.handler = async (event, context) => {
    const params = {
        TableName: 'Chapter',
        IndexName: 'subjectId-index', // Global Secondary Index
        KeyConditionExpression: 'subjectId = :subjectId',
        ExpressionAttributeValues: {
            ':subjectId': event.key,
        },
    };
    console.log(JSON.stringify(params));
    executeQuery(params).then((data) => {
        console.log('sucess');
        context.done(data);
    }).catch((err) => {
        console.log('Error occurred');
        context.done(error);
    })
};