/ / Erreur Meteor Blaze avec Template Helper - météore, routeur de fer, météore-blaze

Erreur Meteor Blaze avec Template Helper - météore, routeur de fer, météore-blaze

La plupart de mes assistants de modèle entraînent un incendie.erreurs et je ne sais pas pourquoi. Ce qui les rend plus étranges, c’est qu’elles ne bloquent pas le rendu ou les événements des modèles, en fait, l’application fonctionne bien.

Le problème principal est une console malpropre, malpropre. Un exemple de ceci est ci-dessous:

Template.templatename.helpers({
adminhelper: function(){
var theUser = Meteor.user(),
theUserId = theUser["_id"];

if(theUserId == "XXX"){
return true;
}
}
});

Juste un moyen de vérifier quel utilisateur est un utilisateur administrateur. Cela se traduit par:

Exception in template helper: TypeError: Cannot read property "_id" of undefined
at Object.Template.templatename.helpers.adminhelper (http://localhost:3000/client/lib/helpers.js?37db222f849959237e4f36abdd8eba8f4157bd32:5:23)
at http://localhost:3000/packages/blaze.js?77c0809654ee3a10dcd5a4f961fb1437e7957d33:2693:16
at http://localhost:3000/packages/blaze.js?77c0809654ee3a10dcd5a4f961fb1437e7957d33:1602:16
at Object.Spacebars.call (http://localhost:3000/packages/spacebars.js?3c496d2950151d744a8574297b46d2763a123bdf:169:18)
at Template.manage.Blaze.If.HTML.HEADER.HTML.DIV.class (http://localhost:3000/client/views/template.templatename.js?868248757c652b031f64adad0edec9e2a276b925:6:22)
at null.<anonymous> (http://localhost:3000/packages/blaze.js?77c0809654ee3a10dcd5a4f961fb1437e7957d33:2454:44)
at http://localhost:3000/packages/blaze.js?77c0809654ee3a10dcd5a4f961fb1437e7957d33:1795:16
at Object.Blaze._withCurrentView (http://localhost:3000/packages/blaze.js?77c0809654ee3a10dcd5a4f961fb1437e7957d33:2029:12)
at viewAutorun (http://localhost:3000/packages/blaze.js?77c0809654ee3a10dcd5a4f961fb1437e7957d33:1794:18)
at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?192a05cc46b867dadbe8bf90dd961f6f8fd1574f:288:36)

Fait intéressant, client / views / template.templatename.js n'existe pas. Je mets tous les assistants dans un fichier helpers.js et tous les événements dans un fichier events.js.

Pour mon itinéraire j'ai

Router.route("/theurl",function(){
this.render("templatename");
},{
waitOn: function(){
return Meteor.user();
}
});

Que puis-je faire pour éviter ces problèmes à l'avenir?

Réponses:

2 pour la réponse № 1

Juste utiliser un garde vérifier l'existence de Meteor.user() avant d'extraire le _id. Attendre sur Meteor.user() dans la route ne fonctionne pas, comme waitOn nécessite un abonnement. Sinon, vous pouvez simplement faire ceci:

Template.templatename.helpers({
adminhelper: function() {
return Meteor.userId() === "XXX";
}
});

Une solution encore meilleure consiste à utiliser le package de rôles.