Здесь есть 2 варианта, но это помогает объяснить немного о каждом, чтобы вы могли выбрать лучший курс действий.
Во-первых, маршруты ... Вы действительно можете, как вы показали визуализировать вид с маршрута напрямую, но вы также можете сделать несколько других вещей. Ниже приведены 2 отрывки из документации сайта sails.js:
module.exports.routes = { 'get /signup': { view: 'conversion/signup' }, 'post /signup': 'AuthController.processSignup', 'get /login': { view: 'portal/login' }, 'post /login': 'AuthController.processLogin', '/logout': 'AuthController.logout', 'get /me': 'UserController.profile' }
'get /privacy': { view: 'users/privacy', locals: { layout: 'users' } },
Отрывок 1 показывает, как вы можете сделать вид непосредственно, как вы показали, но и как вы можете указать на контроллер, чтобы сделать более сложную логику.
Вход в систему вашего контроллера может означать, что для маршрута /me "GET"
вы можете выполнить запрос базы данных в рамках метода «profile», чтобы принять параметр get, найти пользователя и затем отобразить представление с данными пользователей внутри. Пример этого будет:
Profile: function (req,res){
User.find({name: req.param('name')}.exec(function founduser(err,result){
return view('profile',{userdata: result});
});
}
Во втором отрезал от парусов DOCS Вы можете увидеть «местные» упоминаются. Здесь, на пути GET privacy, мы видим, что в представлении сообщается, следует ли использовать шаблон макета или нет. Однако, с учетом сказанного, нет ничего, что останавливало бы вас толкать больше на местных жителей, таких как имя пользователя и т. Д.
По моему мнению, и что я считаю лучшей практикой, я оставил бы ваши маршруты.js довольно тонкими и безболезненными, поместив запросы базы данных/логические/переадресации в ваш контроллер.
Для вашего конкретного примера:
Мой routes.js файл может выглядеть следующим образом
// config/routes.js
module.exports.routes = {
'get /companies': 'CompanyController.index',
'get /companies/:orgname': 'CompanyController.company'
}
Это позволяет первый маршрут потенциально показать список компаний, перейдя в /companies
и мой второй маршрут может пожара, когда запрос на получение производится на основе нажатия названия компании, например /companies/Siemens
Мои CompanyController.js для них может выглядеть следующим образом:
module.exports = {
index: function (req, res) {
return res.view('companieslist');
},
company: function (req, res) {
var companyName = req.param('orgname'); //Get the company name supplied
//My company model which could be in api/models as Company.js is used to find the company
Company.find({name: companyName}).limit(1).exec(function companyresult(err,result){
//Error catch
if(err){return res.negotiate(err)};
//The result of our query is pushed into the view as a local
return res.view('company',{companydata: result}); //Within the .find callback to ensure we keep async
});
}
};
На мой взгляд, я могу получить доступ к данным извлеченной под «companydata», например, для EJS:
<%=companydata[0].name%>
Если вам нужна дополнительная помощь/разъяснения, дайте мне знать. Я рекомендую взглянуть на документацию sails.js, но если вы действительно хотите обойти меня, я рекомендую sails.js в Action, который является ebook из mannings. Пару дней чтения действительно подтолкнуло меня к скорости!
спасибо. Я смог заставить все работать после прочтения вашего объяснения. – Buckeye14Guy