Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Sails.js上获取请求Ember.js_Javascript_Node.js_Ember.js_Sails.js_Jira - Fatal编程技术网

Javascript 在Sails.js上获取请求Ember.js

Javascript 在Sails.js上获取请求Ember.js,javascript,node.js,ember.js,sails.js,jira,Javascript,Node.js,Ember.js,Sails.js,Jira,我正在使用创建一个web应用程序,它在客户端使用Ember.js作为JavaScript框架,在服务器端使用Sails.js作为node.js框架。我按照以下方式构建了我的应用程序体系结构: 我正在尝试从Jira API REST获取一些数据,例如,我可以使用一个简单的控制器从Jira API REST with sails.js获取项目信息: //server/app/controllers/JiraController module.exports = { loadProject

我正在使用创建一个web应用程序,它在客户端使用Ember.js作为JavaScript框架,在服务器端使用Sails.js作为node.js框架。我按照以下方式构建了我的应用程序体系结构:

我正在尝试从Jira API REST获取一些数据,例如,我可以使用一个简单的控制器从Jira API REST with 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请求jiraapi Rest,然后将数据(JSON)传递给Ember.js,后者将在视图中显示它

请问我怎么做

编辑:

在客户端,我这样做:

//pods/components/project/component.js

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return Ember.$.getJSON('/api/v1/projects');
  }
});

如何在我的视图中呈现此JSON?

我认为您的代码中存在一些实现错误

第一件事是在
component.js
文件中编写
Ember.Route
,这是错误的。这样,您的路线被称为
组件
,由于这是错误的位置,您的
模型
将变为空。还有一个原因说明这不起作用。请看,您如何调用
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
。现在,您必须能够访问
视图
中的等效
模型
数据,该数据最好位于
应用程序/模板/组件/组件.hbs

您当前是否在客户端获得“已成功加载项目”?如果是这样,假设
result
有您需要的JSON数据,您可以在
res.send()
中传递该对象。使用Sane堆栈,Ember ans Sails可以进行本机通信,而我之所以希望Sails与外部API通信,是因为我有不同的客户端(Ember客户端、移动客户端…)我想从Sails.js服务器端获取所有数据。顺便说一句,我的应用程序的这种架构是一个好主意吗?@Alaa GI好的,首先你需要弄清楚rails的一面,并得到显示数据的一面。然后再担心客户端。您是否尝试过向getJSON添加回调以检查结果是否返回?像
Ember.$.getJSON('/api/v1/projects',function(res){console.log('response',res)})
实际上它什么也不返回:“response”对象{projects:Array[0]}