2015-05-27 11 views
11

Sto creando un'applicazione web utilizzando Sane stack, che utilizza Ember.js sul lato client come un framework JavaScript e sul lato server utilizza Sails.js come nodo.js struttura. Ho strutturato la mia architettura di applicazione come segue:Ottieni richiesta Ember.js su Sails.js

enter image description here

Sto cercando di ottenere alcuni dati dal Jira API REST, posso, ad esempio, ottenere informazioni un progetto dal API REST JIRA con sails.js utilizzando un semplice controllo:

//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/itinerari: aggiungo:

'get /projects' : 'JiraController.loadProject' 

Ma quello che voglio fare è ottenere il progetto d ata sul lato client con Ember.js, in altre parole, voglio che sails.js richieda il resto dell'API JIRA e poi passi i dati (JSON) a Ember.js che lo visualizzeranno in una vista.

Come posso farlo per favore!?

EDIT:

Nel lato client ho fatto questo:

//pods/components/project/component.js

import Ember from 'ember'; 

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

Come posso rendere questo JSON a mio avviso?

+0

Attualmente stai ricevendo "Progetti caricati correttamente" nel client? Se è così, supponendo che 'result' abbia i dati JSON di cui hai bisogno puoi semplicemente passare quell'oggetto in' res.send() '. – brittonjb

+0

No, non so come ottenere il risultato dal lato client, questa è la mia domanda –

+0

C'è un motivo specifico per cui desideri che il lato delle vele richieda i dati? Invece di avere una query ember, l'API delle vele per interrogare l'altra API, perché non usare semplicemente ember per interrogare direttamente l'altra API? – Craicerjack

risposta

1

Penso che ci sia qualche difetto di implementazione nel codice.

La prima cosa è che si sta scrivendo un Ember.Route all'interno di un file component.js, che è sbagliato. In questo modo il tuo percorso è chiamato component e poiché questa è la posizione sbagliata, il tuo model si svuota. C'è un altro motivo per cui questo non funziona. Vedi, come stai chiamando il gancio model! Il modo corretto è la seguente:

import Ember from 'ember'; 

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

mettere questo in app/routes/components/component.js In questo modo il percorso si chiama component. Ora devi essere in grado di accedere ai dati equivalenti model nel tuo view, che dovrebbe idealmente essere a app/templates/components/component.hbs.