【发布时间】:2020-10-30 18:33:41
【问题描述】:
我有一个 AWS RDS Aurora MySQL 连接。以下是我操作创建、插入和获取数据的步骤:
创建表:
CREATE TABLE user (
user_id BINARY(16) PRIMARY KEY NOT NULL,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(25) NOT NULL,
);
插入表格:
INSERT INTO user VALUES (
UNHEX(REPLACE("9a9cbfga-7426-471a-af27-31be7tb53ii2", "-","")),
"Jon",
"Smith"
);
从表中获取:
SELECT * FROM user WHERE user_id = UNHEX(REPLACE("9a9cbfga-7426-471a-af27-31be7tb53ii2", "-",""));
触发我的函数获取数据的处理函数如下:
module.exports.fetchUser = async (event, context, callback) => {
const params = {
resourceArn: 'arn:aws:rds:*********:cluster:************',
secretArn: 'arn:aws:secretsmanager:*************',
sql: 'SELECT * FROM user WHERE user_id = UNHEX(REPLACE("9a9cbfga-7426-471a-af27-31be7tb53ii2", "-",""))',
database: 'dev_db1',
continueAfterTimeout: true,
includeResultMetadata: true
}
try {
const db_res = await rdsDataService.executeStatement(params).promise();
const response = {
body: {
message: 'Data fetched',
data: JSON.stringify(db_res, null, 2)
}
};
callback(null, response);
} catch (error) {
callback(null, error)
}
};
为相同的结果执行 http 数据 API 端点:
{
"body": {
"message": "Data fetched",
"data": [
[
{
"blobValue": {
"type": "Buffer",
"data": [
202,
136,
22,
206,
45,
214,
75,
233,
156,
28,
163,
223,
186,
115,
89,
107
]
}
},
{
"stringValue": "Jon"
},
{
"stringValue": "Smith"
},
]
]
}
}
我只需要在表user 中获取所有用户的完整详细信息(为了方便起见,现在我只插入了一条记录)并显示确切的user_id 而不是blobValue。不确定如何在响应中将此 UUID 二进制文件转换为可红色的形式,如 9a9cbfga7426471aaf2731be7tb53ii2 或 9a9cbfga-7426-471a-af27-31be7tb53ii2。
我对在 MYSQL 和 Aurora 中处理查询有点陌生,任何帮助我完成这件事的人都会非常感激。提前致谢。
【问题讨论】:
-
为什么在需要返回时首先将其保存为二进制文件并且您仍然查询 uuid
-
@nbk 实际上我被要求跟进这种格式。我们将使用 uuid 作为主键。所以,我试图使用它但无法弄清楚。即使我只是像
SELECT * FROM user这样查询,它仍然会以 blob 格式给出相同的响应。 -
将其保存为字符串,或者如果您需要二进制文件来制作另一列。
-
@nbk 你能帮忙写一些小的书面例子吗?
-
不,我不能你的代码不起作用dbfiddle.uk/…
标签: mysql node.js amazon-aurora