nodeJs使用lambda AWS

时间:2018-04-19 02:59:59

标签: node.js amazon-web-services aws-lambda

nodejs函数应该返回text / csv,而是返回带有嵌入换行符\ n而不是真实换行符的带引号的字符串。

对响应中收到的标头使用拦截器,它正确地说明了 content-type:text / csv 对于像GET / tst / items / name HTTP / 1.1这样的请求  nodejs片段是

 const Json2csvP = require('json2csv').Parser;
 const fields = ['f1','f2','f3'];
var searchQ =['select * from names'];
 await db.any(searchQ[0])
        .then(function(data) {
           const json2csvP = new Json2csvP({ fields, quote: '', eol: '\n' });
            console.log(csv);
            callback(null, (csv));
        })

因此AWS输出中的控制台响应类似于

"field1, field2 field3\n1  2  3"

和浏览器/ REST工具中的调用者获取它

"field1, field2 field3\n1  2  3"

但我在callee方面看下面的csv格式

field1 field2 field3
1  2   3

注意没有引号,而且没有html的纯文本中有一个真正的新行而不是\ n字符。我确实尝试过使用.split,如下所示

 callback(null, (csv).split(/\n/g));

仅在AWS响应结果中提供真实换行符     [“field1 field2 field3”,         “1 2 3”]

但不是所需的格式(两行中没有引号)和调用者/浏览器/ REST工具,它给出如下所示,没有换行符和引号以及额外的不需要的[和]字符,如下所示。

["field1 field2 field3", "1  2   3"]

来电者如何收到以下内容?

field1 field2 field3
    1  2   3

1 个答案:

答案 0 :(得分:0)

我确实尝试了许多用于解析,csv和流等的nodejs模块来获得所需的输出,但没有工作。输出总是字符串化。

根据AWS文档, 它似乎是nodejs和Aws组合限制https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html

  

result - 是一个可选参数,可用于提供   功能执行成功的结果。提供的结果必须是   JSON.stringify兼容。如果提供了错误,则此参数为   忽略

此限制不适用于java和Aws的组合。 https://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-handler-types.html

  

outputType - 如果您计划同步调用Lambda函数   (使用RequestResponse调用类型),您可以返回输出   使用任何支持的数据类型的函数。