2015-05-27 24 views
11

Tôi đang tạo một ứng dụng web bằng cách sử dụng Sane stack, sử dụng Ember.js ở phía máy khách dưới dạng khung JavaScript và ở phía máy chủ, nó sử dụng Sails.js làm node.js khuôn khổ. Tôi có cấu trúc kiến ​​trúc ứng dụng của tôi như sau:Nhận yêu cầu Ember.js trên Sails.js

enter image description here

Tôi cố gắng để có được một số dữ liệu từ Jira REST API, tôi có thể, ví dụ, GET thông tin của dự án từ REST API JIRA với sails.js sử dụng một bộ điều khiển đơn giản:

//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); 
      } 
     }); 
    }  
}; 

Trong máy chủ/app/config/tuyến đường: tôi thêm:

'get /projects' : 'JiraController.loadProject' 

Nhưng những gì tôi muốn làm là có được dự án d ở phía khách hàng với Ember.js, nói cách khác, tôi muốn sails.js đó yêu cầu phần còn lại của API JIRA, sau đó chuyển dữ liệu (JSON) cho Ember.js, nó sẽ hiển thị nó trong một khung nhìn.

Làm cách nào để tôi làm điều đó!

EDIT:

Ở phía client Tôi đã làm điều này:

//pods/components/project/component.js

import Ember from 'ember'; 

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

Làm thế nào tôi có thể làm cho JSON này theo quan điểm của tôi không?

+0

Bạn hiện có đang nhận được "Các dự án được tải thành công" trong ứng dụng khách không? Nếu vậy, giả sử 'result' có dữ liệu JSON bạn cần, bạn có thể chuyển đối tượng đó trong' res.send() '. – brittonjb

+0

Không, tôi không biết cách lấy kết quả từ phía khách hàng, đó là câu hỏi của tôi –

+0

Có lý do cụ thể nào mà bạn muốn phía cánh buồm yêu cầu dữ liệu không? Thay vì có truy vấn ember đuôi api để truy vấn api khác tại sao không chỉ sử dụng ember để truy vấn api khác trực tiếp? – Craicerjack

Trả lời

1

Tôi nghĩ rằng có một số lỗi triển khai trong mã của bạn.

Điều đầu tiên là bạn đang viết Ember.Route bên trong một tệp component.js, điều này là sai. Bằng cách này, tuyến đường của bạn được gọi là component và vì đây là vị trí sai, model của bạn bị trống. Có một lý do nữa tại sao điều này không hiệu quả. Xem, làm thế nào bạn đang gọi model móc! Cách đúng là như sau:

import Ember from 'ember'; 

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

Đặt này tại app/routes/components/component.js Bằng cách này tuyến đường của bạn được gọi là component. Bây giờ bạn phải có thể truy cập dữ liệu tương đương model trong số view của bạn, lý tưởng nhất là ở app/templates/components/component.hbs.

Các vấn đề liên quan