【发布时间】:2018-11-14 02:34:20
【问题描述】:
编写 Angular 5/typescript 客户端调用 node.js 网络服务器与 MySQL 数据库通信。已成功调用名称:
SELECT *
FROM stories JOIN users
ON stories.author_id=users.id
WHERE stories.story_id = 1;
如果我需要在数据库中的字段级别加密作者的姓氏,我可以使用 AES_ENCRYPT 和 AES_DECRYPT。这会改变对 this 的调用。我这里用dlname来区分解密后的值和lname字段。
SELECT *, AES_DECRYPT(lname, UNHEX(SHA2('some phrase',512))) AS dlname
FROM stories JOIN users
ON stories.author_id=users.id
WHERE stories.story_id = 1;
这在使用 phpMyAdmin 的开发环境中工作,dlname 在返回时很好,并显示为文本。但是当使用 MySQL 推送到 prod env 并调用它时,打字稿(Angular 5 客户端)将 dlname 显示为 blob [object Object]。我用 MySQL Workbench 对其进行了检查,它还显示为一个 blob,我可以右键单击它,然后“在查看器中打开值”,我看到姓氏就好了。
我的问题是,如何编写打字稿代码以从 blob 中获取实际的 lname 值?相关的代码行是...
this.http.get<StoryRes>(sRootURI + '/getStory/' + sDocID)
.subscribe(data => {
this.sAuthor = data[0].fname + ' ' + data[0].dlname;
在这种情况下,dlname 在控制台中显示为 [object Object]。
【问题讨论】:
标签: mysql typescript blob aes angular5