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
我确实尝试了许多用于解析,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调用类型),则可以使用任何支持的数据类型返回函数的输出。