2013-03-13 2 views
1

Dans ma collection User, j'ai un tableau appelé synonym_ids.Liste de tableaux rendus dans une collection dans Meteor

Quelle est la façon la plus simple de montrer cela sur le client?

J'ai essayé de publier ce qui suit sur le serveur, puis de m'abonner à partir du client. Cependant, je reçois cette erreur:

Internal exception while starting subscription 0ea473b6-8be4-43ec-8a56-988409a4b58a Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.

#server 
Meteor.publish 'synonym_ids',() -> 
    if Meteor.userId() 
     return Meteor.users.findOne({_id: Meteor.userId()}).synonym_ids 


#client 
Meteor.autosubscribe() -> 
    Meteor.subscribe 'synonym_ids' 
+2

Avez-vous essayé de repla ce Meteor.userId() par this.UserId? –

+0

@Oscar, alors comment est-ce que je ferais surface à un modèle? – Gezim

+0

@Oscar a raison: change 'si Meteor.userId()' en 'si this.userId'. Je pense que vous pourriez également devoir renvoyer un curseur de la fonction publsh ou faire quelque chose de plus avancé. Essayez 'return Meteor.users.find ({_ id: this.userId}, {fields: {synonym_ids: 1}})' pour vous assurer que l'utilisateur voit ce champ. Ensuite, sur le client, une fois l'abonnement terminé, vous devriez pouvoir accéder à 'synonym_ids' avec' Meteor.user(). Synonym_ids'. – zorlak

Répondre

1

Une fonction de publication can't use Meteor.userId(), mais il peut utiliser

#server 
Meteor.publish 'synonym_ids',() -> 
if this.userId() 
    return Meteor.users.findOne({_id: this.userId()}).synonym_ids 

être sûr Dans votre aide de modèle pour vérifier si l'utilisateur est connecté:

#client 
Template.home.synonym_ids = -> 
    Meteor.user().synonym_ids if Meteor.userId 
Questions connexes