Meteor v 1.0 y Hierro: Router
iron-router (1)
Hubo un cambio no compatible con versiones anteriores en la versión más reciente de Iron Router. La guía de migración dice:
onRun
yonBeforeAction
ahora requieren que llames athis.next()
, y ya no tomes un argumento depause()
. Así que el comportamiento por defecto se invierte. Por ejemplo, si tuvieras:
Router.onBeforeAction(function(pause) {
if (! Meteor.userId()) {
this.render(''login'');
pause();
}
});
Tendrás que actualizarlo a
Router.onBeforeAction(function() {
if (! Meteor.userId()) {
this.render(''login'');
} else {
this.next();
}
});
En su caso, la solución de by-the-book sería agregar this.next()
al final de onBeforeAction
. Sin embargo, deberías usar waitOn
:
waitOn: function () {
return Meteor.subscribe("userData");
}
De esa manera, puede establecer una loadingTemplate
que aparecerá mientras se carga la suscripción de datos de userData
.
¿Alguien más está recibiendo el siguiente error de Iron-Router desde la actualización de Meteor a la versión 1.0?
Por favor, publique aquí si sabe cómo resolver este problema.
Despacho de ruta nunca rendido. ¿Olvidó llamar a
this.next()
en unaonBeforeAction
?
Router.map(function () {
Router.route(''profileShow'', {
waitOn: function () {
if (Meteor.user()) {
Meteor.subscribe(''userData'');
} else {
this.next();
}
},
data: function () {
if (Meteor.user()) {
return {profile: Meteor.user().profile};
}
}
});
});