繁体   English   中英

返回 null 的 dynamodb 扫描方法

[英]dynamodb scan method returning null

下面是我试图通过将“type”属性传递为“all”来测试的代码。 但是,返回的数据为空。 设置为此 lambda 的角色也被授予对 DB 的适当访问权限。 表中也有数据。

 const AWS = require('aws-sdk'); const dynamodb = new AWS.DynamoDB({ region: 'us-east-2', apiVersion: '2012-08-10' }); exports.handler = async (event, context, callback) => { // TODO implement const type = event.type; if(type === "all"){ const params = { TableName: 'compare-yourself' }; dynamodb.scan(params, function(err, data){ if(err){ console.log(err); callback(err); } else { console.log(data); console.log(type); callback(null, data); } }); } else if(type === "single") { console.log(type); callback(null, "Just my Data"); } else { callback(null, "Hello from Lambda;"); } };

我添加了一个针对扫描功能的 promise resolve rejection,它总是以null解决。 当我删除它时,它工作正常。

这个问题很老,但我认得代码。 它来自 Maximilian Schwarzmüller 在 AWS 上的 Udemy 课程。

如果你带着同样的问题来到这里,要在今天的课程中实现 DynamoDB 扫描功能,使用较新版本的 nodejs,使用 promise 并将 dynamodb.scan 放在 try catch 中。 此代码位于该课程的问答部分,标题为“我无法获取数据”。

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({ region: 'us-east-2', apiVersion: '2012-08-10' });
 
exports.handler = async (event, context, callback) => {
    const type = event.type;
    if (type === 'all') {
        const params = {
            TableName: 'compare-yourself'
        }
        try {
            const data = await dynamodb.scan(params).promise()
            callback(null, data)
        } catch(err) {
            callback(err);
        }
    } else if (type === 'single') {
        callback(null, 'Just my data');

    } else {
        callback(null, 'Hello from Lambda');
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM