Méthode de contrôleur d'accès sails.js à partir de la méthode du contrôleur
Comment venir dans les voiles vous ne pouvez pas accéder à d'autres méthodes de contrôleur à partir de l'intérieur d'un autre?
comme ça.
module.exports =
findStore: ->
# do somthing
index: ->
@findStore(); # Error: undefined
Compilé
module.exports = {
findStore: function() {},
index: function() {
return this.findStore(); //Error: undefined
}
};
Si vous ne pouvez pas faire cela, alors pourquoi pas? comment dois-je faire cela...
source d'informationauteur iConnor
Vous devez vous connecter pour publier un commentaire.
Avoir le même problème pour les dernières heures. J'ai utilisé l'api/dossier des services.
Il peut ne pas être exactement ce dont vous avez besoin, mais c'est une option.
Une bonne explication est ici. Quels sont les services que ferait-on ajouter à l'api/dans le dossier des services de sails.js
Vous pouvez utiliser
sails.controllers.yourControllerName.findStore()
la
sails
objet global a des références à presque tout.L'une des meilleures façons d'organiser votre code dans les Voiles, au moins pour moi et mon équipe, a été d'avoir toutes la véritable logique d'entreprise dans les Services (/api/services). Ces objets peuvent être consulté dans le monde entier à partir de n'importe quel contrôleur.
Aussi, une bonne pratique est de travailler avec des promesses dans les services (comme des Voiles de les utiliser sur le modèle des méthodes)
Il suffit de créer un service de banque (StoreService.js), avec votre code:
Vos Contrôleurs doit gérer tout ce qui concerne les demandes, les services d'appels et le renvoi appropriées réponses.
Par exemple, en vous exemple, le contrôleur pourrait avoir ceci:
De cette façon, vous avez vraiment simple contrôleurs, et toute la logique métier est géré par les services.
C'est un peu ennuyeux quand vous êtes juste essayer de construire quelque chose rapidement, mais dans le long terme, les forces de code de qualité de l'organisation (en rendant plus difficile de pousser l'ensemble de la logique métier dans un contrôleur).
Je voudrais suggérer une solution qui fonctionne, mais pas la meilleure façon possible de le faire. Nous pouvons utiliser la fonction de liaison pour lier le contexte avec l'appel de la source comme indiqué ci-dessous :
generateUrl est présente dans le Contrôleur d'Un
obtenir l'URL est une autre méthode dans le Contrôleur A
J'espère que cela aide!
Une façon plus élégante de résoudre ce problème en utilisant le mot-clé
this
avant le nom de la fonction.Exemple: