2016-12-15 67 views
0

我發佈的數據節點服務器:無法轉換對象原始值

{ 
    "form_1": [{ 
    "resultName": "", 
    "level": "", 
    "unitOrder": "", 
    "winner": "", 
    "winnerOrder": "", 
    "date": "1", 
    "score": "" 
    }], 
    "form_2": [{ 
    "resultName": "", 
    "level": "", 
    "unitOrder": "", 
    "winner": "", 
    "winnerOrder": "", 
    "date": "1", 
    "score": "" 
    }], 
    "form_3": [{ 
    "resultName": "", 
    "level": "", 
    "unitOrder": "", 
    "winner": "", 
    "winnerOrder": "", 
    "date": "1", 
    "score": "" 
    }] 
} 

我嘗試CONSOLE.LOG快遞服務器上的數據:

console.log(req.body) 

,但總會有錯誤:

TypeError: Cannot convert object to primitive value

我不明白。那麼我如何獲取數據呢?

+1

請參閱http://stackoverflow.com/questions/24339780/posting-object-array-to-sails-causes-typeerror-cannot-convert-object-to-primit – Troajan

+0

我只是嘗試console.log一個對象,它運作良好。 @Troajan – laoqiren

回答

2

console.log是用於記錄字符串或簡單值

的文檔說,你可以格式化輸出,例如一個JSON console.log("body: %j", req.body)

,或者更好的是,使用console.dir記錄的對象,因爲它是

+0

但爲什麼會顯示錯誤? – 2016-12-15 13:05:51

+0

@torazaburo,因爲console.log無法將其轉換爲要顯示的原始值。你嘗試過alebianco的解決方案嗎? – zerohero

+0

出現同樣的錯誤 – laoqiren

0

要點檢查。

  1. 標題類型應該是application/json
  2. 檢查json是否是stringed

角代碼

headers.append('Content-Type', 'application/json'); 
    this.http.post(url, JSON.stringify(body), { headers: headers }).map((data: Response) => data.json()).catch(this.handleError); 
  • 一個Cors在server.js啓用在的NodeJS - 快速代碼

    變種CORS =要求('CORS 「); app.use(cors());

  • 4.Now req.body在api.js(或somefile.js)應具有由角形式傳遞的JSON數據

    上面是一個組合其中爲我工作。有些人通過從角度發送json並試圖在導致錯誤的nodejs中再次解析json對象而面臨錯誤。

    很少得到飛行前錯誤。實際上,瀏覽器可能會首先使用OPTIONS方法發送預發送請求,以獲取允許的來源,標題和方法。所以啓用cors有助於避免此錯誤。