Кодирование клиента Angular 5 / typcript, вызывающего веб-сервер node.js, который обращается к БД MySQL.Был успешно работающий вызов имен:
SELECT *
FROM stories JOIN users
ON stories.author_id=users.id
WHERE stories.story_id = 1;
Если мне нужно зашифровать фамилии авторов на уровне поля в БД, я мог бы использовать AES_ENCRYPT и AES_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, dlname подходит для возврата и отображается в виде текста.Но когда его отправляют в prov env с MySQL и вызывают его, машинопись (клиент Angular 5) показывает dlname в виде BLOB-объекта [объект Object].Я проверил это с MySQL Workbench, и он также показывает это как BLOB-объект, который я могу щелкнуть правой кнопкой мыши, а затем «Открыть значение в средстве просмотра», и я вижу, что фамилия просто отлично.
Мой вопрос, какнаписать машинописный код, чтобы получить фактическое значение lname из большого двоичного объекта?Соответствующие строки кода: ...
this.http.get<StoryRes>(sRootURI + '/getStory/' + sDocID)
.subscribe(data => {
this.sAuthor = data[0].fname + ' ' + data[0].dlname;
В этом случае имя dlname отображается в консоли как [объект объекта].