TypeError:无法读取未定义的属性'_id'(MongoDB和Node.js)
问题描述:
不知何故,“使用MongoDB和Node.js进行Web开发”第7章中的代码不起作用。TypeError:无法读取未定义的属性'_id'(MongoDB和Node.js)
任何人都可以解释为什么,也建议可能的修复?
看来问题是与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],为什么有必要添加后,[0] 文档?
答
insert()返回包含操作状态的WriteResult对象。成功后,WriteResult对象包含有关插入文档数量的信息:
WriteResult({ "nInserted" : 1 })
对不起。你能解释一下这个问题是一样的吗?错误可能看起来是一样的。但是可能的原因可能不同,对吧?谢谢。 – WCPOH