首页 > 解决方案 > AWS Lambda 不会返回查询

问题描述

我有一个用 ApiGateway / Serverless 构建的 lambda。

它将执行 MySQL 查询。MySQL 服务器已启动并运行并执行其他查询没有问题,似乎这是唯一返回空对象的 Lambda。

它接受正文中带有 ID 号的发布请求,然后查询数据库并返回对象/数据。就像在服务器正常运行之前一样。只是这个返回和空对象。

我开始认为这可能在返回结果之前完成,我尝试同时运行 sync 和 aync 并获得相同的结果。

我对 c# 很陌生,所以如果代码可以更有效,请原谅。

不知道为什么每次都会返回一个空对象。

namespace Aws.Lambda
{
    public class SearchHandler:BaseHandler
    {
        public async Task<APIGatewayProxyResponse> getId(LambdaRequest request)
        {
            var error = new Errorhandle();
            var connect = new Connection(); //THIS IS THE DATABASE CONNECTION CLASS (WORKS)

            var result = new List<ReturnTypes>();
            var number = JsonConvert.DeserializeObject<bodyType>(request.body);
            bool boolNumber = String.IsNullOrWhiteSpace(number.factura);

            try
            {
                if(boolNumber)
                {
                    return error.errorApiResponse("empty");
                }
                else
                {
                   await Task.Yield(); // TRYING TO ASYNC / AWAIT THIS, 
     
                   string x = $"SELECT * FROM Table1 WHERE ID_NUM ='{number}'";
                   Console.WriteLine(x); //LOGGING THE QUERY FOR ERRORS (NONE FOUND COPY AND PASTED QUERY AND IT WORKED IN WORKBENCH).

                   var results = connect.getData(x); //QUERY EXECUTE PASS TO FUNCTION MADE IN CLASS

                   if(!results.Read())
                   {
                       return error.errorApiResponse("reader is empty");
                   }
                     while (results.Read())
                    {
                        resultList.Add(insertData(results));
                    }
                    return new APIGatewayProxyResponse
                    {
                        StatusCode = 200,
                        Body = JsonConvert.SerializeObject(resultList),
                        Headers = headerList = new Dictionary<string, string>
                { 
                  { "Content-Type", "application/json" }, 
                  { "Access-Control-Allow-Origin", "*" },
                  {"Access-Control-Allow-Methods","OPTIONS,GET"}
                };
                    };
                }
            } catch (Exception e)
            {
                return error.errorApiResponse("exception error");
                throw e; 
            }
        }


        private static ReturnTypes insertData(System.Data.IDataReader results)
        {
            return new ReturnTypes { Num = results["ID"], Body = results["UUID"];
        }
    }
}

标签: c#jsonamazon-web-services.net-coreaws-lambda

解决方案


推荐阅读