nodeJs使用lambda AWS返回QUOTED字符串而不是纯文本

问题描述 投票:0回答:1

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

对响应中收到的头文件使用拦截器,它正确地说明内容类型: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
node.js amazon-web-services aws-lambda
1个回答
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调用类型),则可以使用任何支持的数据类型返回函数的输出。

© www.soinside.com 2019 - 2024. All rights reserved.