Получить запрос Ember.js на Sails.js
Я создаю веб-приложение, используя Sane stack, который использует Ember.js на стороне клиента как JavaScript, а на стороне сервера он использует Sails.js как фреймворк node.js. Я структурировал архитектуру приложения следующим образом:
![enter image description here]()
Я пытаюсь получить некоторые данные из JRE API REST, я могу, например, получить информацию о проекте из JREA API REST с помощью sails.js с помощью простого контроллера:
//server/app/controllers/JiraController
module.exports = {
loadProject : function(req, res){
console.log("Jira contoller");
var Http = require('machinepack-http');
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
Http.sendHttpRequest({
url: '/rest/api/2/project/',
baseUrl: 'https://jira.domain.com',
method: 'get',
headers: {
"Authorization": "Basic YWxhYS52654f0bWFuaTphbGFhNDE0NA=="
}
}).exec({
serverError: function(result) {
res.send("server error" + JSON.stringify(result));
},
success: function(result) {
// res.send("Projects loaded successfully");
res.send(result);
}
});
}
};
В server/app/config/routes: Я добавляю:
'get /projects' : 'JiraController.loadProject'
Но то, что я хочу сделать, это получить данные проекта на стороне клиента с помощью Ember.js, другими словами, я хочу, чтобы sails.js запросил JIRA API Rest, а затем передал данные (JSON) в Ember. js, который отобразит его в представлении.
Как я могу это сделать, пожалуйста!?
ИЗМЕНИТЬ:
На стороне клиента я сделал это:
//стручки/компоненты/проекта/component.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return Ember.$.getJSON('/api/v1/projects');
}
});
Как я могу отобразить этот JSON на мой взгляд?
Ответы
Ответ 1
Я думаю, что в вашем коде есть ошибка реализации.
Во-первых, вы пишете Ember.Route
внутри файла component.js
, что неверно. Таким образом, ваш маршрут называется component
, а поскольку это неправильное местоположение, ваш model
становится пустым. Есть еще одна причина, почему это не работает. Смотрите, как вы вызываете model
hook! Правильный способ:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return Ember.$.getJSON('/api/v1/projects');
}
});
Поместите это на app/routes/components/component.js
Таким образом, ваш маршрут называется component
. Теперь вы должны иметь доступ к эквивалентным model
данным в view
, который в идеале должен быть в app/templates/components/component.hbs
.