【问题标题】:TypeError: Cannot read property '_id' of undefined (MongoDB and Node.js) [duplicate]TypeError:无法读取未定义的属性“_id”(MongoDB和Node.js)[重复]
【发布时间】:2017-06-26 13:38:04
【问题描述】:

不知何故,“使用 MongoDB 和 Node.js 进行 Web 开发”第 7 章的这段代码不起作用。

谁能解释原因并提出可能的解决方法?

看来问题出在 doc[0]._id

如果我注释掉第 [10] 行,我不会看到错误。

这是直接从书中复制的完整代码。

1  var MongoClient = require('mongodb').MongoClient;
2
3  MongoClient.connect('mongodb://localhost:27017/mongotest', function(err, db) {
4    console.log('Connected to MongoDB!');
5
6    var collection = db.collection('testing');
7    collection.insert({'title': 'Snowcrash'}, function(err, docs) {
8        console.log(docs.length + ' record inserted.');
9        console.log(docs[0]._id + ' - ' + docs[0].title);
10
11       collection.findOne({title: 'Snowcrash'}, function(err, doc) {
12           console.log(doc._id + ' - ' + doc.title);
13           db.close();
14       });
15   });
16 });

经过一番谷歌搜索,我找到了解决方法。

MongoDB. Undefined record inserted. Cannot read property 'title' of undefined

console.log(docs.ops.length + ' record inserted.');
console.log(docs.ops[0].title + ' – ' + docs.ops[0]._id);

找到更多线索: 查看https://www.w3schools.com/nodejs/nodejs_mongodb_insert.asp 请参阅有关结果对象的段落。

不过,谁能解释一下添加 .ops 有何不同?

另外,对于第 [9] 行,为什么需要在 docs 之后添加 [0]

【问题讨论】:

  • 对不起。你能解释一下这个问题是如何相同的吗?错误可能看起来是一样的。但可能的原因可能不同,对吧?谢谢。

标签: javascript node.js mongodb


【解决方案1】:

insert() 返回一个包含操作状态的 WriteResult 对象。成功后,WriteResult 对象包含有关插入的文档数量的信息:

WriteResult({ "nInserted" : 1 })

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 2013-09-03
    • 2022-07-27
    • 2022-09-23
    • 2019-09-13
    • 1970-01-01
    • 2020-11-22
    • 2014-12-24
    • 2020-09-03
    相关资源
    最近更新 更多