2013-08-30 20 views
6

Otrzymuję komunikat "TypeError: Can not read property" _id "of undefined" na prostym żądaniu posta, aby zapisać dokument w kolekcji o nazwie books, Moja treść wygląda następująco :TypeError: Nie można odczytać właściwości "_id" o niezdefiniowanym

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

I właśnie robię db.books.save() na mojej trasie ekspresowym. Ponieważ nie przekazuję identyfikatora, powinno to działać idealnie, ale nie w tym przypadku.

Poniżej znajduje się pełna błędów wysypisko Dostaję na moim serwerze węzła:

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

po przesłaniu kodu, w którym został wyrzucony – soulcheck

Odpowiedz

8

Upewnij się NPM zainstalować ciało-parser, następnie dodać

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

app.use(bodyParser());

do góry kodzie. Zakłada to również, że korzystasz z Express.

+1

Czy możesz wyjaśnić, dlaczego to rozwiązuje problem? – Will

+0

Ponieważ do wypełnienia polecenia req.body potrzebne jest oprogramowanie pośredniczące typu body-parsing. W przeciwnym razie nie będzie można przeanalizować odpowiedzi. –

4

Spróbuj tego:

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

app.use(bodyParser.json()); 

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

Proszę również dodać wyjaśnienia. Dzięki! – Sampada

+0

Konstruktor ciało-parser został uznany za przestarzały w wersji Express 4. Źródło: http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4 –

0

Chociaż nie ma odpowiedzi na to pytanie, innym rozwiązaniem jest sprawdzenie wersji wyraźnej js w node.json. W moim własnym przypadku zmieniłem wersję z wersji 3.x na 4.x i to wystarczyło, aby pozbyć się tego błędu. Mam nadzieję, że to pomoże komuś.

Powiązane problemy