MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Qu'est-ce que je fais de mal lorsque je manipule des données dans Meteor/MongoDB ?

Les assistants de modèle sont réactifs, ce qui signifie qu'ils se mettent à jour lorsque l'état de l'application change ou que de nouvelles données apparaissent. Dans votre cas, l'assistant est appelé immédiatement lorsque le modèle est rendu et avant le Meteor.users la collection est remplie. Par conséquent, le .findOne() la méthode renvoie undefined. Il sera corrigé lors de la deuxième passe après l'arrivée de nouvelles données.

La solution simple ici consiste à vérifier si les données sont présentes dans l'assistant :

myClub: function(){
  var currenUserId = Meteor.userId();
  var user = Meteor.users.findOne({_id: currenUserId});
  if(!user) return 'NO DATA';
  return user.role;
},

Dans la vraie vie, vous souhaiterez probablement attendre que les données de base soient chargées avant de rendre le modèle. Cela se fait généralement au niveau du contrôleur.