TypeError:无法读取未定义的属性“_id”

你好,Node + mongodb的大师,

我得到错误“types错误:无法读取属性未定义的_id”在一个简单的发布请求将文档保存到coolection书,我的有效载荷看起来像这样

{ "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... 

提前感谢您的答复。 BR,chids

       

网上收集的解决方案 "TypeError:无法读取未定义的属性“_id”"

确保npm安装body-parser,然后添加

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

app.use(bodyParser());

到您的代码的顶部。 这也假设你正在使用Express。

请试试这个:

 var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); 

尽pipe这个问题有一个答案,但另一个解决scheme是检查node.json中的expression式js的版本。 在我自己的情况下,我把版本从3.x切换到4.x,这足以摆脱这个错误。 我希望它可以帮助别人。