MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

O que estou fazendo de errado ao manipular dados no Meteor/MongoDB?


Os auxiliares de modelo são reativos, o que significa que eles se atualizam à medida que o estado do aplicativo muda ou novos dados aparecem. No seu caso, o auxiliar é chamado imediatamente quando o modelo é renderizado e antes do Meteor.users coleção está cheia. Portanto, o .findOne() método retorna indefinido. Ele será corrigido na segunda passagem após a chegada de novos dados.

A correção simples aqui é verificar se os dados estão presentes dentro do auxiliar:
myClub: function(){
  var currenUserId = Meteor.userId();
  var user = Meteor.users.findOne({_id: currenUserId});
  if(!user) return 'NO DATA';
  return user.role;
},

Na vida real, você provavelmente desejará esperar que os dados básicos sejam carregados antes de renderizar o modelo. Isso geralmente é feito no nível do controlador.