TypeError:无法读取未定义的属性'_id'(MongoDB和Node.js)

时间:2017-06-21 09:18:34

标签: javascript node.js mongodb

不知何故,“使用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]

1 个答案:

答案 0 :(得分:0)

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

WriteResult({ "nInserted" : 1 })