2017-06-21 83 views
0

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

+0

對不起。你能解釋一下這個問題是一樣的嗎?錯誤可能看起來是一樣的。但是可能的原因可能不同,對吧?謝謝。 – WCPOH

回答

0

insert()返回包含操作狀態的WriteResult對象。成功後,WriteResult對象包含有關插入文檔數量的信息:

WriteResult({ "nInserted" : 1 }) 
相關問題