Question

Utiliser le routeur de fer Il est possible d'ajouter des crochets comme:

// this hook will run on almost all routes
Router.before(mustBeSignedIn, {except: ['login', 'signup', 'forgotPassword']});

// this hook will only run on certain routes
Router.before(mustBeAdmin, {only: ['adminDashboard', 'adminUsers', 'adminUsersEdit']});

Voir: https://github.com/eventedminind/iron-Router#Crochets

Mais les documentations ne disent pas comment faire ces crochets "côté serveur".

L'idée est de créer un crochet qui supervisera les collections de publication pour tous les itinéraires, à l'exception d'une ou deux itinéraires spécifiques où je souhaite plus de contrôle sur ce qui est publié.

Était-ce utile?

La solution

Le routeur de fer n'est que identique à la fois sur le client et le serveur et les déclarations peuvent être effectuées sur un répertoire / fichier qui est disponible pour le client et le serveur.

Par défaut, les itinéraires déclarés concernent le client. Si vous souhaitez qu'un itinéraire soit du côté serveur, vous déclarez explicitement expressément en incluant where: 'server'.

tiré du Documents officiels :

Définition des itinéraires et la configuration du routeur est presque identique sur le serveur et le client. Par défaut, les itinéraires sont créés en tant que itinéraires clients. Vous pouvez spécifier qu'un itinéraire est destiné au serveur en fournissant une propriété où la propriété est la suivante:

Router.map(function () {
  this.route('serverRoute', {
    where: 'server',

    action: function () {
      // some special server side properties are available here
    }
  });
});

Notez que l'endroit où doit être placé dans routeur.map, pas sur le contrôleur.

Les fonctions d'action du serveur (roulettes) ont des propriétés et des méthodes différentes disponibles. À savoir, il n'y a pas encore de rendu sur le serveur. La méthode de rendu n'est donc pas disponible. De plus, vous ne pouvez pas les abonnements d'attente ou appelez la méthode d'attente sur le serveur. Routes de serveur Obtenez la demande nue, la réponse et les propriétés suivantes de la demande de connexion, ainsi que l'objet Params comme dans le client.

Router.map(function () {
  this.route('serverFile', {
    where: 'server',
    path: '/files/:filename',

    action: function () {
      var filename = this.params.filename;

      this.response.writeHead(200, {'Content-Type': 'text/html'});
      this.response.end('hello from server');
    }
  });
});

Comme vous le voyez, il n'y a qu'une convention de dénomination, vous pouvez donc indiquer quelque chose comme ceci:

Router.before(someFilter, {only: ['clientRoute1', 'clientRoute2', 'serverRoute1']});

ou

Router.before(someOtherFilter, {except: ['clientRoute3', 'clientRoute4', 'serverRoute2']});

Tout comme vous le feriez normalement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top