2014-11-04 10 views
8

Do tej pory szukałem wszystkich interwebs i meteor docs, ale nic nie działa dla mnie.Jak uzyskać bieżącą nazwę użytkownika z Meteorem

tworzę konto z

Accounts.createUser({ 
    username: username, 
    email: email, 
    password: password 
}); 

I wiem, że pracuje od {{#if currentUser}} działa.

Jednak staram się uzyskać nazwę użytkownika aktualnie zalogowanego w użytkownika z czymś takim jak

var username = Meteor.userId(); 
console.log(username); 

var username = Meteor.userId().username; 
console.log(username); 

Ale nie działa, gdy używam Meteor.userId() ja po prostu losowy (zgaduję szyfrowane) ciąg liczb i liter, a kiedy używam Meteor.userId().username, jest to niezdefiniowane.

Cała pomoc jest mile widziana i przepraszam za moją możliwie okropną gramatykę, to jest bardzo późno,!

Odpowiedz

10

Meteor.userId() zwraca _id użytkownika z kolekcji Mongo.users. Dlatego wygląda na pozbawiony znaczenia ciąg.

Chcesz Meteor.user(). docs to Twój najlepszy przyjaciel :)

+2

Niestety, zapomniałem wspomnieć, że próbowałem już. Zwraca jako niezdefiniowany. –

+0

Wyjaśnienie: Po prostu "Meteor.user()" zwraca z Object {_id: "2zWQoT7wWWXXEWjY", e-maile: Array [1]}. Ale "Meteor.user(). Username" zwraca wartość undefined. –

+0

Czy twój dostawca logiczny ustawił nazwę użytkownika? 'accounts-password' nie, Twitter robi. –

1

Myślę, że Accounts.createUser -> nazwa użytkownika ustawi tylko Meteor.user(). Profile.name. A jeśli chcesz mieć Meteor.user() nazwa użytkownika powinna prawdopodobnie używać również Accounts.onCreateUser (https://docs.meteor.com/#/full/accounts_oncreateuser) i dodać pole nazwę użytkownika, takich jak:.

Accounts.onCreateUser(function (options, user) { 

    user.username = user.profile.name; 

    return user; 

}); 

Jest w ten sposób, ponieważ Meteor.user() jest nazwa użytkownika. niestandardowe pole w tym przypadku.

9

Spróbuj z {{currentUser.username}}

+0

Użyłem tego kodu, a moja nazwa użytkownika jest teraz wyświetlana. ale kiedy używam tego poniżej kodu, jego nie pokazuje adresu e-mail. to jest {{currentUser.email}} Jestem zalogowany przez nazwę użytkownika, ale nie e-mail, gdy wyświetla się nazwa użytkownika, ale e-mail nie wyświetla się. –

+0

Rozwiąż to samo. –

+5

, więc podziel się nim z nami ... – henk

1

dodać do klientów js

 
Accounts.ui.config({ 
    passwordSignupFields: 'USERNAME_AND_EMAIL' 
}); 
+0

Thx, bardzo pomocne. To było wszystko, czego szukałem. – Narwhal

2

trzeba użyć username: Meteor.user() w pliku js i wykorzystania plików html {{username.profile.name}}

+0

To jest poprawna wersja, jeśli korzystasz z protokołu OAuth (np. Facebook lub login Google)! Więcej informacji można znaleźć w [the docs] (https://guide.meteor.com/accounts.html#current-user). – Domi

1

robie to tak :

  1. Uwzględnij konto pa ckage: meteor dodaj konta-hasło
  2. import {Meteor} z 'meteor/meteor'
  3. console.log ("Nazwa użytkownika:" + Meteor.user() .nazwa użytkownika);

Użytkownik musi być zalogowany, w przeciwnym razie Meteor.user() zwróci wartość null.

Edycja: Należy również pamiętać, że Meteor.user() nie będzie dostępny, dopóki kolekcja użytkowników nie zostanie pobita przez klienta.

0
Meteor.userId(); 

Kod powyżej powrotu łańcucha, który jest unikalny identyfikator użytkownika, zalogowanych Meteor.userId() nie całego obiektu użytkownika. Więc nie możesz próbować żadnej własności. Aby obecna nazwa zrobić w następujący sposób: 1 -/W kontrolerze meteorów

var uniqueID = Meteor.userId(); 
var username = Meteor.users.findOne({_id: uniqueID}).usename; 

2 -/W meteorów szablonu

{{ currentUser.username }} 
0

Wszystko w jednym!

Meteor.users.findOne({ _id: Meteor.userId() }).username 

Następnie można albo zwracana wartość do zmiennej, państwowe lub Sesji ..etc

Powiązane problemy