2016-11-21 1 views
0

Ich benutze Auth0 in meiner App angular2 und sobald der Benutzer sich anmeldet der Auth0-Dienst sendet eine Antwort, die das Benutzerprofil Informationen enthält.Erstellen von JSON-Post in Angular 2

Die Antwort kann je nach Anmeldemethode, die der Benutzer auswählt, unterschiedlich aussehen. Ich möchte nur die E-Mail-Adresse in der Antwort abspalten.

Dies ist eine typische Reaktion,

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 

Nun, wenn ich diese Antwort erhalte ich die E-Mail-Adresse wie folgt abspalten,

  1. ich eine Klasse erstellt die E-Mail-Adresse zu halten,

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

  2. I instanziiert t er widerspricht,
    user: Object;

  3. Ich bewege die E-Mail aus dem Profil Objekt in die user

this.user = profile.email;

Das Problem an dieser Stelle muß ich die E-Mail im JSON-Format sein. Also ich benutze,

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

Aber wenn ich console.log(email); ich [email protected] statt json.

Deshalb an dieser Stelle,

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] 

Ich brauche die email tatsächlichen json zu sein. Benutze ich nicht JSON.stringify(this.user); richtig?

+0

2. wird nichts instanziiert. Es deklariert eine Variable vom Typ Objekt. 3 weist profile.email, das wahrscheinlich ein String ist, diese Variable zu. Wenn der Benutzer ein Benutzer sein soll, sollte sein Typ Benutzer sein, nicht Objekt. Und Sie sollten dieser Variablen keinen String zuweisen. Um eine Instanz von User zu erstellen, lautet die Syntax "new User (theEmail)". https://www.typescriptlang.org/docs/handbook/classes.html –

+0

Danke Mann. Funktioniert sofort. Ich fühle mich jetzt schuldig, weil ich gefragt habe. Vielen Dank. – wuno

Antwort

0

Für eine bessere Sichtbarkeit habe ich den Kommentar von JB Nizet als Community-Wiki-Antwort eingefügt.


Schritt 2 wird nichts Instanziierung. Es deklariert eine Variable vom Typ Objekt.

Schritt 3, weist dieser Variablen profile.email zu, was wahrscheinlich eine Zeichenfolge ist. Wenn user ein User sein soll, sollte sein Typ User, nicht Object sein. Und Sie sollten dieser Variablen keinen String zuweisen. Um eine Instanz von User zu erstellen, lautet die Syntax new User(theEmail).

Überprüfen Sie typescriptlang.org/docs/handbook/classes.html als Referenz.