我的S3存储桶中有一个JSON对象,我想使用S3 select查询此JSON数据,检索所需的字段,然后将结果连接成字符串,然后将其返回给其他函数,Alexa会说出此字符串。
我在S3存储桶中的JSON数据如下所示。
{
person = [
{
"Id": "valid",
"Name": "Anshu",
"Address": "Templestowe",
"Car": "Jeep"
},
{
"Id": "valid",
"Name": "Ben Mostafa",
"Address": "Las Vegas",
"Car": "Mustang"
},
{
"Id": "not valid",
"Name": "Rohan Wood",
"Address": "Wooddon",
"Car": "VW"
},
{
"Id": "not valid",
"Name": "John Cena",
"Address": "Wooddon",
"Car": "VW"
},
{
"Id": "valid",
"Name": "Ray Hope",
"Address": "Wooddon",
"Car": "VW"
}
]
}
现在,我希望能够使用S3 select从我的lambda函数查询此数据。
我正在将NODE JS用于我的Alexa技能。
我想要所有ID为“有效”的人的名字。
运行SQL查询时:
select s.name from s3object[*].person[*] s where s.name is not missing AND s.id = 'valid'
我以以下形式获取数据:
[
{
"name": "Anshu"
},
{
"name": "Ben Mostafa"
},
{
"name": "Ray Hope"
}
]
我想知道的是如何接受上述结果,然后使用lambda函数按如下所示创建字符串?
str = "Anshu .Ben Mostafa. Ray Hope"
所以,对于上述查询,我希望我的结果是字符串变量str = "Anshu .Ben Mostafa. Ray Hope"
我在这里阅读了有关使用诺言从查询中返回结果的信息,但是我不确定如何继续进行。
[此外,我阅读了AWS文档,但无法处理结果。你能帮我吗?
let result = [
{
"name": "Anshu"
},
{
"name": "Ben Mostafa"
},
{
"name": "Ray Hope"
}
]
const str = result.map(r => r.name).join(". ").concat("."); // "Anshu. Ben Mostafa. Ray Hope."