2013-08-30 10 views
6

sto ottenendo errore "TypeError: Impossibile leggere la proprietà '_id' di indefinito" su una semplice richiesta post per salvare un documento per la collezione chiamata books, mio carico si presenta così :TypeError: Impossibile leggere la proprietà '_id' undefined

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

E sto solo facendo il mio percorso in db.books.save() in espresso. Dato che non sto passando l'id, dovrebbe funzionare idealmente, ma non in questo caso.

Di seguito si riporta la discarica di errore completo sto ottenendo sul mio server nodo:

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

inserisci il codice dove viene generato – soulcheck

risposta

8

Assicurarsi di NPM installare body-parser, quindi aggiungere

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

app.use(bodyParser());

alla parte superiore del vostro codice. Questo presuppone anche che tu stia usando Express.

+1

Puoi spiegare perché questo risolve il problema? – Will

+0

Perché è necessario utilizzare il middleware di analisi del corpo per popolare req.body. Altrimenti non sarai in grado di analizzare la risposta. –

4

Si prega di provare questo:

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

app.use(bodyParser.json()); 

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

Si prega di aggiungere anche qualche spiegazione. Grazie! – Sampada

+0

Il costruttore body-parser è stato deprecato con Express 4. Origine: http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4 –

0

Anche se c'è una risposta per questa domanda, un'altra soluzione è quello di verificare la versione dei js Express nel node.json. Nel mio caso, ho cambiato la versione da 3.x a 4.x e questo è stato sufficiente per eliminare questo errore. Spero che aiuti qualcuno.

Problemi correlati