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
答案 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调用类型),您可以返回输出 使用任何支持的数据类型的函数。