2017-02-05 4 views
2

Ich habe ein Meteor-Telefonauthentifizierungspaket mys:accounts-phone installiert, das in die Benutzersammlung ein phone.number Unterfeld einfügen sollte. Ich versuche, dieses Feld zugreifen, wie folgt:Zugriff auf die Meteor.user() -Eigenschaft fehlgeschlagen

Meteor.user().phone.number 

aber Typoskript zeigt Fehler

Property ‚phone‘ existiert nicht auf Typ ‚Benutzer‘.

Auf der anderen Seite habe ich benutzerdefinierte Requisiten in users.profile, und kann auf diese Weise einfach auf sie zugreifen. Unsicher ist noch nicht entfernt. Autopublish ist eingeschaltet.

+0

gibt es eine Möglichkeit, alle Schlüssel unter dem Objekt 'Meteor.user()' zu drucken oder anderweitig anzuzeigen? – theonlygusti

+0

{ \t "_id": "xk67327YLKYeiPnKE", \t "erstelltAt": ISODate ("2017-01-19T12: 21: 55.692Z "), \t "Dienste": { \t \t "Telefon": {}, \t \t "Lebenslauf": { \t \t \t "loginTokens": [ \t \t \t \t { \t \t \t \t \t "when": isodate ("2017-01-19T12: 22: 05.008Z"), \t \t \t \t \t "hashedToken": "CLBi1T8fthuGOqpiS2alZw7kaGm oiAYiCC4nJZoTssc = " \t \t \t \t}] \t \t} \t}, \t "Telefon": { \t \t "number": "9721234567", \t \t "verifiziert": true}, \t" Profil“: { \t \t "name": "Lф11" \t \t "REGNUM": "Х205НА77"}} – Dmitry

+0

Dies ist Extraktes aus DB. Eigentlich weiß ich nicht, wie man Meteor.user() Objektschlüssel bekommt. Eine andere seltsame Sache, durch Ctrl-Space Idea zeigt Benutzername Eigenschaft, die in der DB fehlt. – Dmitry

Antwort

0

Dies passiert manchmal, wenn unsere Winkelkomponente initialisiert wird, aber unsere Meteordaten nicht vom Server erreicht werden. versuchen Benutzer Injektion anstelle von Meteor.user()

import {Component} from "@angular/core"; 
import { InjectUser } from 'angular2-meteor-accounts-ui';//<--**** import this**** 

@Component({ 
     selector: "login-buttons", 
     template 
    }) 
@InjectUser('user') //<--*** add this*** 
export class LoginButtonsComponent { 
     user: Meteor.User; //<--*** add this *** 
     constructor(private router: Router) {} 
} 

jetzt in Benutzervariablen zu verwenden, werden Sie alle Werte von Meteor.User haben

, wenn Sie diesen

in HTML-Teil Gebrauch drucken möchten
<div *ngIf="user"> 
    {{user.phone.number}} 
</div> 

vergessen Sie nicht

meteor add accounts-password 

meteor npm install --save angular2-meteor-accounts-ui 

und in app.mod zu installieren ule.ts Datei

import { AccountsModule } from 'angular2-meteor-accounts-ui'; 

@NgModule({ 
    imports: [ 
    ... other modules here 
    AccountsModule 
    ], 

hoffe, das wird funktionieren. Wenn das nicht funktioniert, lass es mich wissen, ich werde dir eine andere Lösung sagen

+0

Ich benutze Konto-Telefon-Paket, so dass es keine Notwendigkeit für Konten-Passwort, nicht wahr? Es gibt auch keine Beschreibung oder Dokumentation über angular2-meteor-accounts-ui. Ich verwende Ionic 2 für das Frontend. – Dmitry

+0

Derselbe Fehler zur Kompilierzeit. – Dmitry

0

Wahrscheinlich Antwort von Meteor erhalten docs.

Es erklärt, warum Benutzername Eigenschaft erscheint. Standardmäßig veröffentlicht Meteor nur eine Anzahl von Feldern, die als öffentlich gelten. Um zusätzliche Felder freizulegen, müssen sie explizit veröffentlicht werden.

Noch keine Zeit zum Testen, aber denke, es sollte funktionieren.

Der andere Grund, mit den gleichen Symptomen, wenn Publikations-Code nicht auf Server-Seite ausgeführt wird. Versuchen

Meteor.startup(() => { 
    // code to run on server at startup 
    Meteor.publish('userData', function() { 
     if(!this.userId) return null; 
     return Meteor.users.find(this.userId 
      //, {fields: {lastname: 1,}} 
     ); 
    }); 
}); 

in einer Datei innerhalb /server Ordner Ihrer Anwendung zu setzen.

Verwandte Themen