编写一个angular5/typescript客户机,调用node.js web服务器与mysql数据库对话。成功地进行了人名征集:
SELECT *
FROM stories JOIN users
ON stories.author_id=users.id
WHERE stories.story_id = 1;
如果我需要在数据库的字段级别加密作者的姓氏,我可以使用aes\u encrypt和aes\u decrypt。这将更改对此的调用。我在这里使用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的dev环境中工作,dlname在返回时显示为文本。但是当用mysql推送到prod env并调用它时,typescript(angular5客户机)将dlname显示为blob[object]。我用mysql workbench检查了它,它也显示为一个blob,我可以右键单击它,然后单击“openvalue in viewer”,我就可以看到它的姓了。
我的问题是,如何编写typescript代码来从blob中获取实际的lname值?相关的代码行是。。。
this.http.get<StoryRes>(sRootURI + '/getStory/' + sDocID)
.subscribe(data => {
this.sAuthor = data[0].fname + ' ' + data[0].dlname;
在本例中,dlname在控制台中显示为[object]。
1条答案
按热度按时间gev0vcfq1#
我从mysql中使用aes\ U decrypt with order子句返回的blob数据中找到了一些帮助。添加强制转换(。。。作为char)围绕aes\u解密函数。。。
在客户端,只需确保调用新的字段名dlname而不是实际的名称lname。客户端不需要任何附加内容,将按预期以文本形式提供。