2016-11-21 3 views
0

Я использую Auth0 в своем приложении angular2 и после того, как пользователь регистрируется в службе auth0, отправляет ответ, содержащий данные профиля пользователя.Создание JSON Post In Angular 2

Ответ может выглядеть по-разному в зависимости от метода входа пользователя, который выбирается пользователем. Я только хочу отделить адрес электронной почты в ответе.

Это типичный ответ,

Object 
clientID 
: 
"skdjcbjlwrjlw" 
created_at 
: 
"2016-10-15T06:03:44.636Z" 
email 
: 
"[email protected]" 
email_verified 
: 
true 
family_name 
: 
"Walker" 
gender 
: 
"male" 
given_name 
: 
"Paul" 
global_client_id 
: 
"ojwebcvjoweojewhc" 
identities 
: 
Array[1] 
locale 
: 
"en" 
name 
: 
"Paul Walker" 
nickname 
: 
"nick" 
picture 
: 
"https://lh4.googleusercontent.com/photo.jpg" 
updated_at 
: 
"2016-11-21T22:29:33.158Z" 
user_id 
: 
"google-oauth2|102515181977826170152" 
__proto__ 
: 
Object 

Теперь, когда я получаю, что ответ я расколоть адрес электронной почты от, как это,

  1. Я создал класс для хранения электронной почты,

    export class User { constructor( public email: string, ) { } }

  2. I экземпляр т он возражает,
    user: Object;

  3. переместить письмо из объекта профиля в user

this.user = profile.email;

Проблема в этот момент мне нужно по электронной почте в формате JSON. Поэтому я использую,

var email = JSON.stringify(this.user); 

Но когда я console.log(email); я получаю [email protected] вместо JSON.

Таким образом, в данный момент,

console.log(profile); // outputs json of whole profile 
     this.user = profile.email; 
     console.log(this.user); // outputs just the email address 
     var email = JSON.stringify(this.user); 
     console.log(email); // expects json gets [email protected] 

мне нужна email быть актуальной JSON. Я не правильно использую JSON.stringify(this.user);?

+0

2. не создает ничего. Он объявляет переменную типа Object. 3 присваивает этой переменной profile.email, которая, вероятно, является String. Если пользователь должен быть пользователем, его тип должен быть User, а не Object. И вы не должны назначать строку этой переменной. Чтобы создать экземпляр пользователя, синтаксисом является «новый пользователь (theEmail)». https://www.typescriptlang.org/docs/handbook/classes.html –

+0

Спасибо, человек. Мгновенно работает. Теперь я чувствую себя виноватым. Благодарю. – wuno

ответ

0

Для большей видимости я включаю комментарий от JB Nizet в качестве ответа сообщества wiki.


Шаг 2, это ничего не инстанцировании. Он объявляет переменную типа Object.

Шаг 3, присваивает profile.email, который, вероятно, является строкой, к этой переменной. Если user должен быть User, его тип должен быть User, а не Object. И вы не должны назначать строку этой переменной. Чтобы создать экземпляр User, синтаксис равен new User(theEmail).

Отметьте typescriptlang.org/docs/handbook/classes.html для справки.