2017-08-01 39 views
0

我想通過http獲取請求使用angular2和節點服務器 從Mongo DB獲取數據。當我試圖查看 瀏覽器中獲取響應,我可以看到html標籤爲「_body」的價值,但如果同樣的HTTP GET 請求更改爲HTTP POST然後效應初探是如下:角度2 http獲取請求不通過節點服務器獲取數據,而http post正常工作

"{"success":true,"sellerdata":[]}" as value of "_body". 

爲什麼帖子正在使用相同的代碼配置,但沒有得到請求?

這是我的角碼。所有必需的進口都存在於課堂上。
這是服務類,其中得到observable創建。

/**(post changes which is working fine)return 
this.http.post('/sellerlist',{}).map(**/ 

@Injectable() 
export class AdminService { 
    constructor(private http:Http) { } 
    getSellerdata(){ 
    return this.http.get('/sellerlist').map( 
     (res:Response) =>{return res.json();})  
    }} 

這是訂戶類,其中啓動請求並在瀏覽器控制檯上記錄響應。

@Component({selector: 'app-admin-sellers',}) 
export class AdminSellersComponent implements OnInit { 
    constructor(private adminService :AdminService) { } 
    ngOnInit() { 
    this.adminService.getSellerdata().subscribe(
     (dataFromServer) => {console.log(dataFromServer);}); // 
    }} 

這裏是我的節點服務器JS。所有服務器端配置都在這裏。

const express = require('express'); 
const path = require('path'); 
const http = require('http'); 
const bodyParser = require('body-parser'); 
const jwt = require('jsonwebtoken'); 
const mongoose = require('mongoose'); 
const app = express(); 
const port = process.env.PORT || '3000'; 
app.set('port', port); 
const server = http.createServer(app); 
mongoose.Promise = require('bluebird'); 
mongoose.connect('localhost/testapp') 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(express.static(path.join(__dirname, 'dist'))); 
app.get('*', (req, res) => { 
    console.log(req.body); 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 
app.use('/secure/*', secureRoutes); 
function secureRoutes(req, res, next) { 
    var token = req.headers['token']; 
    if (token) { 
    jwt.verify(token, process.env.SECRET_KEY, function (err, decode) { 
     if (err) { 
     res.status(500).send('Email & Password do not match'); 
     } else { 
     next(); 
     }}); 
    } else {console.log(2)}}; 
app.all("/secure/*", secureRoutes, function (req, res, next) { 
    next();}); 
app.get('/sellerlist', getSellerList); 
/**(post changes which is working fine) 
app.post('/sellerlist', getSellerList);**/ 
+3

大概是因爲當發送POST請求的服務器不響應的數據。 –

+0

不清楚你在這裏問什麼。您是否在說1.預期的數據不會被回覆2.不知道如何處理來自回覆的數據。我所看到的只是一個帶'console.log()'的'.subscribe()',而不是試圖在任何地方實際賦值。如果** 1 **是問題,那麼你的問題缺乏相關的代碼或測試實際與數據庫本身一起工作的函數。當然,它只是一個GET方法。這裏沒有POST。 –

+0

在你的節點js –

回答

0
Problem was present in server side configuration. 

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 

is written before 

app.get('/sellerlist', getSellerList); 

So all get requests are handled by the default configuration . After reversing the above order , get requests worked.