![](/img/trans.png)
[英]Meteor - Using FS returns TypeError: Cannot read property 'Collection' of undefined
[英]Using Mongodb: TypeError: Cannot read property 'collection' of undefined
執行https://www.freecodecamp.com/challenges/store-data-in-mongodb時遇到此問題
錯誤消息原為
swyx:~/workspace $ learnyoumongo run find.js
/home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/mongodb/lib/server.js:231
process.nextTick(function() { throw err; })
^
TypeError: Cannot read property 'collection' of undefined
at Exercise.<anonymous> (/home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/exercises/find/exercise.js:37:5)
at next (/home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/workshopper-exercise/exercise.js:271:17)
at Exercise.end (/home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/workshopper-exercise/exercise.js:277:5)
at Workshopper.end (/home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/workshopper/workshopper.js:191:12)
at Workshopper.done (/home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/workshopper/workshopper.js:323:19)
at Exercise.<anonymous> (/home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/workshopper-exercise/exercise.js:160:14)
at /home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/workshopper-exercise/exercise.js:147:16
at /home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/exercises/find/exercise.js:20:21
at /home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/mongodb/lib/mongo_client.js:238:20
at /home/ubuntu/.nvm/versions/node/v4.6.1/lib/node_modules/learnyoumongo/node_modules/mongodb/lib/db.js:242:14
這里還有其他類似的問題,但是沒有一個人描述這個確切的問題
供參考,這是我在其上運行的(有效)代碼
var mongo = require('mongodb').MongoClient
var age = process.argv[2]
var url = 'mongodb://localhost:27017/learnyoumongo'
mongo.connect(url, function(err, db) {
if (err) throw err
var parrots = db.collection('parrots')
parrots.find({
age: {
$gt: +age
}
}).toArray(function(err, docs) {
if (err) throw err
console.log(docs)
db.close()
})
})
解決方案是我的mongodb服務器在一夜之間意外關閉,甚至沒有運行。 要重新啟動它,您必須恢復( https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/ ),然后重新啟動。
在MongoDB本機NodeJS驅動程序的2.x版中,您將獲得數據庫對象作為connect回調的參數:
mongo.connect(url, (err, db) => {
// Database returned
});
但是根據3.0的更改日志,您現在將獲得一個包含數據庫對象的客戶端對象:
mongo.connect(url, (err, client) => {
// Client returned
var db = client.db('mytestingdb');
});
close()方法也已移至客戶端,因此您必須編寫client.close();
代替db.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.