2013-08-30 30 views
6

文書をコレクションに保存する単純な投稿要求でTypeError:未定義の_id 'プロパティを読み取れません "books、 ペイロードは次のようになります:TypeError:未定義のプロパティ '_id'を読み取ることができません

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

私は急いで私のルートでdb.books.save()をやっています。 私はIDを渡していないので、これは理想的には動作するはずですが、この場合は動作しません。以下は

は、私は私のノードサーバ上で取得しています完全なエラーダンプです:

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

は、あなたのコードの先頭に

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

app.use(bodyParser());

を追加、ボディパーサーをインストールNPMに確認してください。これは、あなたが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

body-parserコンストラクタは、Express 4で廃止されました。ソース:http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4 –

0

この質問に対する答えはそこにあるにもかかわらず、別のソリューションは、node.jsonであなたの明示のjsのバージョンを確認することです。私自身のケースでは、バージョンを3.xから4.xに切り替えました。このエラーを取り除くには十分でした。私はそれが誰かを助けることを望む。

関連する問題