Node.js TypeError:无法读取属性'_id';未定义的

Node.js TypeError:无法读取属性'_id';未定义的,node.js,mongodb,express,mongojs,Node.js,Mongodb,Express,Mongojs,我在一个简单的post请求中收到错误“TypeError:无法读取未定义的属性'\u id',该请求将文档保存到名为图书的集合中, 我的有效载荷如下所示: { "name": "practical view", "author": "DN", "location": "room 50" } 我只是在express中的路线中执行db.books.save()。 由于我没有传递id,这在理想情况下应该可以工作,但在这种情况下不行 下面是我在节点服务器上获得的完整错误转储:

我在一个简单的post请求中收到错误“TypeError:无法读取未定义的属性'\u id',该请求将文档保存到名为
图书的集合中
, 我的有效载荷如下所示:

{
    "name": "practical view",
    "author": "DN",
    "location": "room 50"
}
我只是在express中的路线中执行
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...

确保npm安装主体解析器,然后添加

var bodyParser=require('body-parser')

app.use(bodyParser())

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

请尝试以下操作:

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

app.use(bodyParser.json());

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

尽管这个问题有答案,但另一个解决方案是在node.json中检查express js的版本。在我自己的例子中,我将版本从3.x切换到了4.x,这足以消除这个错误。我希望它能帮助一些人。

这是由于您在package.json中使用的依赖项版本造成的,如果您参考了任何博客或教程,请下载他们的代码,查看他们使用的依赖项版本,并在您的项目中安装这些依赖项。
希望您能解决您的错误,快乐编码。:)

将代码张贴在其所在位置,并请添加一些解释。谢谢Express4不推荐使用主体解析器构造函数。源:因为您需要使用主体解析中间件来填充req.body。否则您将无法解析响应。这是什么意思?您指的是express.json()?package.json@hectoromerodev