gpt4 book ai didi

node.js - 如何从 AWS DynamoDB 中的函数返回查询结果 - JS lambda

转载 作者:搜寻专家 更新时间:2023-10-31 23:23:56 25 4
gpt4 key购买 nike

我有一个让我发疯的愚蠢问题。我有一个调用 Dynamo db 的 AWS lambda 函数。

我想让函数中的 ddb.Scan 操作获取结果,然后将其传递给事件,但我无法在函数内部返回结果...

var aws = require('aws-sdk');
var ddb = new aws.DynamoDB();

function getName(userid) {

ddb.scan({
TableName: "Users",
ScanFilter: {
"userid":
{
"AttributeValueList": [
{"S": userid}
],
"ComparisonOperator": "EQ"
}
}
}, function (err, data) {
return data.Items[0].username;
});

};

exports.handler = function (event, context) {

var userid= '4vwe6jd56es59q';

var username = getName(userid);

context.succeed({success: true, username: username});


};

有人可以帮助我了解我迷路的地方吗?

最佳答案

注意你是如何在这里声明一个函数的:

function getName(userid) {

这里还有一个函数:

function (err, data) {

这是您尝试返回某些内容的第二个函数,但没有期望该函数返回任何内容,因此返回值被丢弃。

请注意,对 ddb.scan() 的调用会立即返回,而您传递给 ddb.scan() 的匿名回调函数会在稍后调用,在检索到 DynamoDB 响应之后。这是一个基本的异步编程概念,在成功编写 NodeJS 代码之前,您必须了解它。您需要将回调传递给您的 getName 函数,一旦它具有名称值就可以调用该函数,或者您可能需要重新考虑您设计 Lambda 函数的方式。

我还建议使用 AWS Lambda 上可用的最新版本的 NodeJS,这样您就可以使用 promises 而不是回调,这使得使用异步函数更容易一些。

关于node.js - 如何从 AWS DynamoDB 中的函数返回查询结果 - JS lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39937492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com