MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Cosa sbaglio durante la manipolazione dei dati in Meteor/MongoDB?

Gli helper dei modelli sono reattivi, il che significa che si aggiornano quando lo stato dell'app cambia o vengono visualizzati nuovi dati. Nel tuo caso, l'helper viene chiamato immediatamente quando viene eseguito il rendering del modello e prima di Meteor.users la raccolta è piena. Pertanto, il .findOne() il metodo restituisce undefined. Verrà corretto nel secondo passaggio dopo l'arrivo di nuovi dati.

La semplice soluzione qui è controllare se i dati sono presenti all'interno dell'helper:

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

Nella vita reale probabilmente vorrai aspettare che i dati di base vengano caricati prima di eseguire il rendering del modello. Questo di solito viene fatto a livello di controller.