2013-08-30 4 views
6

Ich erhalte den Fehler "TypeError: Kann die Eigenschaft' _id 'von undefined nicht lesen" in einer einfachen Postanforderung, um ein Dokument in der Sammlung books, zu speichern :TypeError: Kann die '_id'-Eigenschaft von' undefined 'nicht lesen

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

Und ich tue db.books.save() in meiner Route nur in Eil. Da ich die ID nicht passiere, sollte dies idealerweise funktionieren, aber nicht in diesem Fall.

Unten ist die vollständige Fehler Dump ich auf meinem Knotenserver bin immer:

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

den Code, wo es geworfen wird posten – soulcheck

Antwort

8

Stellen Sie sicher, Körper-Parser NPM installieren, fügen Sie dann

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

app.use(bodyParser());

an die Spitze des Codes. Dies setzt auch voraus, dass Sie Express verwenden.

+1

Können Sie erklären, warum dies das Problem löst? – Will

+0

Da Sie Body-Parsing-Middleware verwenden müssen, um req.body zu füllen. Andernfalls können Sie die Antwort nicht analysieren. –

4

Bitte versuchen Sie dies:

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

app.use(bodyParser.json()); 

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

Bitte fügen Sie auch eine Erklärung hinzu. Vielen Dank! – Sampada

+0

Der body-parser-Konstruktor wurde mit Express 4 nicht weiter unterstützt. Quelle: http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4 –

0

Auch wenn es für diese Frage eine Antwort, eine andere Lösung, um die Version Ihrer Express.js im node.json zu überprüfen ist. In meinem Fall habe ich die Version von 3.x auf 4.x umgestellt und das war genug, um diesen Fehler loszuwerden. Ich hoffe es hilft jemandem.