16

我在一个简单的发布请求中收到错误“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...
4

4 回答 4

15

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

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

app.use(bodyParser());

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

于 2013-09-06T21:18:13.630 回答
6

请试试这个:

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

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: true }));
于 2016-04-27T05:50:18.493 回答
0

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

于 2016-12-26T15:18:17.680 回答
0

添加这对我有用的这两种方法:

app.use(express.json()); 
app.use(express.urlencoded({ extended: true }));
于 2022-02-22T05:10:31.853 回答