2015-07-28 2 views
2

У меня есть много функций, скажем, P(), Q(), R(), S(), T(), и у меня есть 3 контроллера, A, B и C.Правильное место для определения функций многократного использования в Sails.js

Контроллер A использует P() и Q(), B использует R(), S() и T(), а C использует P(), Q() и T().

Я уже определил контроллеры, где я должен определить функции (в какой папке)? как включить их в контроллеры?

Функции могут быть использованы в некоторых других контроллерах позже (и их можно классифицировать).

ответ

4

Вы должны поместить их в папку служб. Вот что the docs предусматривает:

«Услуги» похожи на контроллер действия, но, как правило, используются для вещей, которые не nessecarily должны произойти между временем, когда пользователь отправляет запрос и, когда сервер отправляет обратно ответ. Любая логика, которая не полагается на .req() и .res(), может быть превращена в сервис, если не по какой-либо другой причине, кроме как держать ваши контроллеры чистыми и управляемыми.

Например, вы можете создать Utils службу:

// api/services/Utils.js 

module.exports.p = function (a, b, c) { 
    // Do whatever... 
}; 

module.exports.q = function (a, b, c) { 
    // Do whatever... 
    return c(); 
}; 

// And so on 

И использовать эти функции в ваших контроллерах, как это:

// api/controllers/A.js 

module.exports = { 

    anAction: function (req, res) { 
    // ... 
    Utils.p('hello', 1, [123, 456]); 
    Utils.q('world', 0, function() { 
     // ... 
    }); 
    // ... 
    } 

}; 

Вы также можете получить доступ к функциям обслуживания с sails.services['utils'].theFunctionName() и замените theFunctionName на имя функции, которую вы хотите использовать (например, p).

Смежные вопросы