niq*_*qui 16 amazon-web-services amazon-aurora aws-rds-data-service
我正在使用适用于 Amazon Aurora Serverless的新数据 API
是否可以在响应中获取表列名称?
例如,如果我在包含列, , , ,的用户表中运行以下查询:idfirst_namelast_nameemailphone
const sqlStatement = `
SELECT *
FROM user
WHERE id = :id
`;
const params = {
secretArn: <mySecretArn>,
resourceArn: <myResourceArn>,
database: <myDatabase>,
sql: sqlStatement,
parameters: [
{
name: "id",
value: {
"stringValue": 1
}
}
]
};
let res = await this.RDS.executeStatement(params)
console.log(res);
Run Code Online (Sandbox Code Playgroud)
我收到了这样的回复,所以我需要猜测哪个列对应于每个值:
{
"numberOfRecordsUpdated": 0,
"records": [
[
{
"longValue": 1
},
{
"stringValue": "Nicolas"
},
{
"stringValue": "Perez"
},
{
"stringValue": "example@example.com"
},
{
"isNull": true
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
我想得到这样的回应:
{
id: 1,
first_name: "Nicolas",
last_name: "Perez",
email: "example@example.com",
phone: null
}
Run Code Online (Sandbox Code Playgroud)
更新1
我找到了一个npm 模块,它封装了 Aurora Serverless Data API 并简化了开发
我们决定采用当前的方法,因为我们试图减少响应大小,并且在每条记录中包含列信息是多余的。
您可以明确选择在结果中包含列元数据。请参阅参数:“includeResultMetadata”。
小智 6
同意这里的共识,即应该有一种开箱即用的方式从数据服务 API 中做到这一点。因为没有,这里有一个 JavaScript 函数来解析响应。
const parseDataServiceResponse = res => {
let columns = res.columnMetadata.map(c => c.name);
let data = res.records.map(r => {
let obj = {};
r.map((v, i) => {
obj[columns[i]] = Object.values(v)[0]
});
return obj
})
return data
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3739 次 |
| 最近记录: |