sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Qué estoy haciendo mal al manipular datos en Meteor/MongoDB?

Los ayudantes de plantilla son reactivos, lo que significa que se actualizan a medida que cambia el estado de la aplicación o aparecen nuevos datos. En su caso, se llama al ayudante inmediatamente cuando se representa la plantilla y antes de Meteor.users la colección está llena. Por lo tanto, .findOne() método devuelve indefinido. Se corregirá en la segunda pasada después de que lleguen nuevos datos.

La solución simple aquí es verificar si los datos están presentes dentro del asistente:

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

En la vida real, probablemente querrá esperar a que se carguen los datos básicos antes de renderizar la plantilla. Eso generalmente se hace en el nivel del controlador.