2013-08-30 37 views
6

我收到錯誤「TypeError:無法讀取未定義的屬性'_id'在簡單的發佈請求上將文檔保存到名爲books, 的集合中我的負載看起來像這樣:TypeError:無法讀取未定義的屬性'_id'

{ 
    "name": "practical view", 
    "author": "DN", 
    "location": "room 50" 
} 

而我只是在做我的路線中的db.books.save()快遞。 由於我沒有通過身份證,這應該是理想的工作,但不是在這種情況下。

以下是完整的錯誤轉儲我我的節點服務器上獲得:

C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:411 
      throw err 
       ^
TypeError: Cannot read property '_id' of undefined 
    at Collection.save (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\collection.js:393:15) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:203:65 
    at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25 
    at Db.collection (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\db.js:488:44) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:268:7 
    at apply (C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:16:28) 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\thunky\index.js:20:25 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\index.js:300:4 
    at C:\NodeProjects\ExpressTutorial\Library\node_modules\mongojs\node_modules\mongodb\lib\mongodb\mongo_client.js:408:11 
31 Aug 00:14:30 - [nodemon] app crashed - waiting for file changes before starting... 
+1

發佈代碼拋出的代碼 – soulcheck

回答

8

確保NPM安裝身體的解析器,再加入

var bodyParser = require('body-parser');

app.use(bodyParser());

你的代碼的頂部。這也假設您正在使用Express。

+1

你能解釋爲什麼這樣可以解決問題嗎? – Will

+0

因爲您需要使用body-parsing中間件來填充req.body。否則,你將無法解析響應。 –

4

請試試這個:

var bodyParser = require('body-parser'); 

app.use(bodyParser.json()); 

app.use(bodyParser.urlencoded({ extended: true })); 
+2

請添加一些解釋。謝謝! – Sampada

+0

身體分析器構造函數已被Express 4棄用。來源:http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4 –

0

即使有這個問題的答案,另一種解決方案是在node.json檢查您的快遞JS的版本。在我自己的情況下,我將版本從3.x切換到4.x,足以擺脫這個錯誤。我希望它能幫助別人。

相關問題