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

Chi*_*thy 11 mongodb node.js express mongojs

我收到错误"TypeError:无法读取未定义的属性'_id'"在简单的帖子请求上将文档保存到名为的集合中books,我的有效负载如下所示:

{
    "name": "practical view",
    "author": "DN",
    "location": "room 50"
}
Run Code Online (Sandbox Code Playgroud)

我只是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...
Run Code Online (Sandbox Code Playgroud)

Gid*_*hal 10

确保npm install body-parser,然后添加

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

app.use(bodyParser());

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

  • 你能解释为什么这解决了这个问题吗? (2认同)

小智 6

请试试这个:

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

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: true }));
Run Code Online (Sandbox Code Playgroud)

  • 请添加一些解释。谢谢! (3认同)