Selon ce problème fermé dans les voiles: https://github.com/balderdashy/sails/issues/835
CRUD Blueprint Overrides "absolument, cela arrive en v0.10"
Je voudrais modifier les plans de mon service sailsjs pour autoriser les racines nommées (consommer en ember). Actuellement, je dois personnaliser chaque contrôleur que je crée avec des actions qui sont en grande partie des doublons de ce qui est déjà dans les plans.
Je soupçonne que je peux déplacer ce code hors de mes contrôleurs maintenant et dans une zone de remplacement de plans, mais je ne sais pas où mettre ce code.
Tous les exemples ou même juste un pointeur vers le code correspondant dans voiles le repo .10 seraient grandement appréciés.
Afin de remplacer les plans dans Sails 1.0 de la manière décrite ci-dessous, vous devez d'abord installer le plugin "plans personnalisés" pour votre projet (npm install sails-hook-custom-blueprints
).
Pour remplacer les plans dans Sails v0.10, vous créez un api/blueprints
dossier et ajoutez vos fichiers de plan directeur (par exemple, find.js
, create.js
, etc.) à l'intérieur. Vous pouvez jeter un œil à le code pour les actions par défaut dans le crochet des plans Sails pour une longueur d'avance.
L'ajout de plans personnalisés est également pris en charge, mais ils ne sont actuellement pas liés automatiquement aux itinéraires. Si vous créez un /blueprints/foo.js
fichier, vous pouvez lui associer une route dans votre /config/routes.js
fichier avec (par exemple):
'GET /myRoute': {blueprint: 'foo'}
vous pouvez ajouter des actions avec ces noms à l'intérieur de votre contrôleur pour remplacer le comportement par défaut
changer le comportement de détruire
module.exports = {
destroy: function(req,res){
Goal.update({ id: req.param('id') }, { deleted: true })
.exec(function (err, goal) {
if (err) return res.json(err, 400);
return res.json(goal[0]);
});
}
}
Il est possible d'utiliser la construction dans les plans, mais avec les politiques en cours d'exécution en premier. Ces politiques peuvent vérifier que l'utilisateur est connecté, dispose d'un accès correct ou similaire. Vraiment pratique!
Sur chaque modèle, vous disposez de rappels disponibles avant et après le stockage des données. Creusez dans: http://sailsjs.com/documentation/concepts/models-and-orm/lifecycle-callbacks
Aucun rappel par défaut n'est disponible pour le résultat des plans. Mais n'abandonnez pas. Il est toujours possible d'utiliser la génération dans les plans et de modifier uniquement la sortie. Ce n'est peut-être pas la solution la plus élégante, mais cela fonctionne bien. Découvrez mon "hack" ici: Cycle de vie des plans de voiles