2014-02-15 11 views
1

我有以下代碼不能在node.js中發送JavaScript對象的數組

app.get('/posts',function(req,res){ 

console.log(posts); 
res.send(posts); 
res.send(200); 
}); 

,我使用以下命令獲取並返回JS對象的數組(職位是數組)

App.PostsRoute = Ember.Route.extend({ 
model: function(){ 
    return $.ajax({ 
     url : '/posts', 
     type : 'GET', 
     success : function(data){ 
      return data; 
     } 
    }); 
} 
}); 

所以,當我與[ { body: "Hello" }, {body : "world" } ]填充posts陣列,我得到下面的輸出中控制檯:

Output of node console

而在我的應用程序,該模型沒有呈現,而且我看不出在Chrome瀏覽器開發工具的任何迴應,這些都是一些SS

Chrome SS

響應是空的,甚至沒有{}。出了什麼問題?我不認爲有任何與Ember什麼,畢竟我看不到迴應!

回答

1

我覺得出現這個問題,因爲你叫res.send兩次。只是註釋此行:不需要

res.send(200); 

這條線,因爲快速自動設置狀態碼200(或在某些場合 - 304)。

如果你想設置自己的狀態碼,只寫:

res.status(someCode); 

,你可以閱讀here

+0

,但是如果一個接一個地使用'res.send(200)'和'res.json(obj)'它會起作用嗎? –

+0

@ user206032我相信不會。但你也可以寫'res.json(200,obj);'或'res.send(200,obj);' – Curious

1

的幾個問題:

  1. 您需要JSON.stringify你的對象在發送前。

  2. 嘗試改用此res.send的:

    res.writeHead(200, {'Content-Type': 'application/json'}); 
    res.end(JSON.stringify(posts)); 
    
  3. 你是哪裏試圖返回 '數據'?你應該有一些回調函數在那裏,就像這樣:

    success:function(data) { 
        handleData(data); 
    } 
    
+0

將數據作爲postsRou​​te的模型返回,它是Ember –