javascript - 使用 S3 Select 数据的 Alexa Skill
问题描述
我的 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."
推荐阅读
- linux - AM335x - 用于 linux 内核的 i2c 从站
- node.js - 使用 caolan 的异步库,什么时候应该使用 process.nextTick,什么时候应该只调用回调?
- sql-server - 从 char 字符串转换日期和/或时间时转换失败
- python - 在 Flask 中将数据库 sqlite 更改为 mysql
- javascript - 如何从 Promise 返回字符串
- java - Java矩阵旋转到位
- javascript - Ajax 不会触发 onreadystatechange
- c# - 反序列化 .json 字符串返回:'对象引用未设置为对象的实例'
- bash - Bash 脚本 - 确定脚本是在终端控制台还是 gui 中启动
- clojure - Clojure Quil 慢键输入