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

Posted

技术标签:

【中文标题】TypeError:无法读取未定义的属性“_id”【英文标题】:TypeError: Cannot read property '_id' of undefined 【发布时间】:2013-09-03 17:44:46 【问题描述】:

我收到错误“TypeError:无法读取未定义的属性'_id'”,这是一个简单的发布请求,将文档保存到名为books 的集合中, 我的有效载荷如下所示:


    "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】:

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

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

app.use(bodyParser());

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

【讨论】:

因为需要使用body-parsing中间件来填充req.body。否则你将无法解析响应。【参考方案2】:

请试试这个:

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

app.use(bodyParser.json());

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

【讨论】:

请添加一些解释。谢谢! Express 4 不推荐使用 body-parser 构造函数。来源:***.com/questions/24330014/…【参考方案3】:

即使这个问题有答案,另一个解决方案是在 node.json 中检查你的 express js 的版本。在我自己的情况下,我将版本从 3.x 切换到 4.x,这足以摆脱这个错误。我希望它可以帮助某人。

【讨论】:

这是什么意思?你指的是 express.json() 吗? package.json @hectorromerodev【参考方案4】:

这是由于您在 package.json 中使用的依赖项的版本,如果您引用任何博客或教程,请下载他们的代码并查看他们使用的依赖项版本,然后在您的项目中安装该依赖项。 希望你能解决你的错误,HAPPY CODING。 :)

【讨论】:

以上是关于TypeError:无法读取未定义的属性“_id”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取 MEAN 堆栈中未定义的属性“_id”

TypeError:无法读取未定义的属性(读取“匹配”):

TypeError:无法在身份验证时读取未定义的属性“jwtoken”

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

TypeError:无法读取未定义的属性(读取“名称”)

TypeError:无法读取未定义的属性“findAll”(expressjs)