web-dev-qa-db-fra.com

Comment obtenir le nom d'utilisateur de l'utilisateur actuel avec Meteor

Jusqu'ici, j'ai parcouru les pages Web et les documents Meteor, mais rien n'a fonctionné pour moi.

Je crée un compte avec

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

Et je sais que cela fonctionne depuis que {{#if currentUser}} fonctionne.

Cependant, j'essaie d'obtenir le nom d'utilisateur de l'utilisateur actuellement connecté avec quelque chose comme:

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

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

Mais ni l'un ni l'autre ne fonctionne, lorsque j'utilise Meteor.userId(), je reçois simplement une chaîne aléatoire de chiffres et de lettres (je devine cryptée), et lorsque j'utilise Meteor.userId().username, elle indique que ce n'est pas défini.

Toute aide est la bienvenue et désolée pour ma grammaire éventuellement terrible, Il est très tard ici!

9
David Chalifoux

Meteor.userId() renvoie le _id de l'utilisateur depuis la collection Mongo.users . C'est pourquoi cela ressemble à une chaîne dénuée de sens.

Vous voulez Meteor.user() . Les docs sont votre meilleur ami :)

10
Dan Dascalescu

Essayez avec {{currentUser.username}}

9
darkcode

vous devez utiliser username: Meteor.user() dans le fichier .js .__ et dans le fichier html, utiliser {{username.profile.name}}

2
Nikhil

Je le fais comme ça:

  1. Inclure un package de comptes: meteor add accounts-password
  2. importer {Meteor} de 'météore/météore'
  3. console.log ('Nom d'utilisateur:' + Meteor.user (). Nom d'utilisateur);

L'utilisateur doit être connecté, sinon Meteor.user () renvoie null.

Edit: n'oubliez pas que Meteor.user () ne sera disponible que lorsque la collection d'utilisateurs sera envoyée au client.

1
Angel Pateiro

ajouter aux clients js

 Accounts.ui.config ({
 PasswordSignupFields: 'USERNAME_AND_EMAIL' 
}); 
1
sgp

Je pense que Accounts.createUser -> nom d'utilisateur ne configurera que Meteor.user (). Profile.name. Et si vous voulez avoir Meteor.user (). Nom d'utilisateur, vous devez probablement utiliser aussi Accounts.onCreateUser ( https://docs.meteor.com/#/full/accounts_oncreateuser ) et ajouter un champ de nom d'utilisateur comme:

Accounts.onCreateUser(function (options, user) {

    user.username = user.profile.name;

    return user;

});

C'est ainsi que Meteor.user () .nomutilisateur est un champ personnalisé dans ce cas.

1
juliancwirko

Tout en un! 

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

Ensuite, vous pouvez soit retourner la valeur à variable, State ou Session ..etc

1
Deano
Meteor.userId();

Ce code ci-dessus renvoie une chaîne qui correspond à l'ID unique de l'utilisateur enregistré Meteor.userId () et non à l'objet utilisateur complet. Donc, vous ne pouvez essayer aucune propriété . Pour que le nom d'utilisateur actuel soit comme suit: 1 -/in meteor controller

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

2 -/dans le modèle météore

{{ currentUser.username }}
0
payene