2016-03-22 28 views
-1

'dan veri alamıyor NodeJS, localhost: 3002/visit aracılığıyla MySQL'den JSON verilerini sunan arka uç olarak var; Angular2'nin NodeJS'imden JSON'u almasını istiyorum. Sorun Angular2 uygulamasının JSON API'sini çevrim içi JSON API hizmetinden mükemmel bir şekilde alabiliyor olsa da, URL GET 'i localhost: 3002/visit'e değiştirdiğimde abonede hata veriyor.Angular2, NodeJS

NodeJS:

var mysql = require('mysql'); 
var express = require('express'); 

var app = express(); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : 'angela', 
    database : 'emergency', 
}); 

connection.connect(function(err){ 
if(!err) { 
    console.log("Database is connected ... nn");  
} else { 
    console.log("Error connecting database ... nn");  
} 
}); 

app.get('/patient',getAllFromPatient); 
app.get('/staff', getAllFromStaff); 
app.get('/visit', getAllFromVisit); 

function getAllFromPatient(req,res){ 
    connection.query('SELECT * from patient', function(err, rows, fields) { 
    if (!err) 
     res.send(rows); 
    else 
     console.log('Error while performing Query.'); 
});} 

function getAllFromStaff(req,res){ 
    connection.query('SELECT * from staff', function(err, rows, fields) { 
    if (!err) 
     res.send(rows); 
    else 
     console.log('Error while performing Query.'); 
});} 

function getAllFromVisit(req,res){ 
    connection.query('SELECT * from visit', function(err, rows, fields) { 
    if (!err){ 
     res.send(rows); 
     console.log("visit data sent"); 
     }else 
     console.log('Error while performing Query.'); 
});} 

app.listen(3002); 

Eğik 2:

return this.http.get("http://localhost:3002/visit") 
.map(res => res.json()) 
.subscribe(
     data => this.msg = JSON.stringify(data), 
     err => alert(err), 
     () => console.log("complete") 
    ); 
+2

"Hata" hakkında daha spesifik olabilir misiniz? – qqilihq

+0

Sadece vahşi bir tahmin - send '() 'yerine Response' json() 'yöntemini kullanarak denediniz mi? – rrjohnson85

cevap

1

Angular2 alınan içerik JSON biri olduğunu bilmelidir. Bu nedenle, application/json değerine sahip Content-Type başlığı, bu durumda yanıt başlıklarında bulunmalıdır.

İhtiyacınız Bunu yapmak için birine: elle ayarlama

  • Content-Type başlık:

    function getAllFromVisit(req,res){ 
        connection.query('SELECT * from visit', function(err, rows, fields) { 
        if (!err){ 
         res.setHeader("Content-Type", "application/json"); 
         res.send(rows); 
         console.log("visit data sent"); 
        }else 
         console.log('Error while performing Query.'); 
        }); 
    } 
    
  • kullanın aynı şeyi yapar yerine json yöntemi:

    function getAllFromVisit(req,res){ 
        connection.query('SELECT * from visit', function(err, rows, fields) { 
        if (!err){ 
         res.json(rows); 
         console.log("visit data sent"); 
        }else 
         console.log('Error while performing Query.'); 
        }); 
    }