2016-03-22 14 views
-1

ローカルホスト経由でMySQLからのJSONデータを処理するバックエンドとしてNodeJSを持っています:3002/visit; Angular2にNodeJSからJSONを取得させたい 問題は、私のAngular2アプリがオンラインJSON APIサービスからJSONを完全に得ることができますが、私はURLをGETしてlocalhost:3002/visitに切り替えると購読時にエラーを出します。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); 

角度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

「エラー」についてより具体的に説明できますか? – qqilihq

+0

あなたは 'send()'の代わりにResponseの 'json()'メソッドを使ってみましたか? – rrjohnson85

答えて

1

Angular2は、受信したコンテンツがJSON一つであることを知る必要があります。この場合、application/json値のContent-Typeヘッダーが応答ヘッダーに存在する必要があります。

手動 Content-Typeヘッダを設定し
  • 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.'); 
        }); 
    } 
    
  • 同じことを代わりにjsonメソッドを使用します

    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.'); 
        }); 
    } 
    
  • をするあなたはどちらかが必要であることを行うには

関連する問題