Mongolab nodejs拓扑被破坏

我一直使用nodejs与Twitter接口。 我正在尝试在mongolab mongodb数据库中logging一些重要的公共用户数据。 出于某种原因,我不断得到一个“拓扑被破坏的错误”我不太确定这是为什么。

var Twitter = require('twitter'); var mongodb = require('mongodb'); var accounts = ['@zaynmalik', '@ZooeyDeschanel']; var client = new Twitter({ consumer_key: 'key', consumer_secret: 'secret', access_token_key: 'key', access_token_secret: 'secret' }); var MongoClient = mongodb.MongoClient; var url = "mongodb://user:pass@mongolab.com:numbers/db"; MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); } else { //HURRAY!! We are connected. :) console.log('Connection established to database'); var collection = db.collection('accounts'); for(var i = 0; i < accounts.length; i++){ client.get('users/show', {screen_name: accounts[i]}, function(error, tweets, response){ if(error) console.log(error); var account = {'screen_name': accounts[i], 'id': tweets.id}; collection.insert(account, {w:1}, function(err, result) {console.log(err);}); //collection.insert(account); console.log(tweets.id); // Raw response object. }); } db.close(); } }); 

正如你所看到的,程序build立到数据库的连接。 定义集合,然后遍历一些Twitter帐户并logging相关信息。 叽叽喳喳请求是成功的,并且MongoDB以简单的请求工作。 如果您对我为什么收到此答复有任何想法,请回答。

Solutions Collecting From Web of "Mongolab nodejs拓扑被破坏"

我有类似的问题,您的数据库连接closures之前,所有的请求到twitter完成和数据插入。

我最终发送callback函数,就像他们在文档中做的那样。

https://github.com/mongodb/node-mongodb-native#inserting-a-document

你可以看到插入完成后他们调用callback(result);

这就是匿名函数,调用db.close()

这里有一些其他的链接,可以帮助你打开/closures数据库连接

何时closuresNodejs中的MongoDB数据库连接

为什么build议不要在Node.js代码中的任何地方closuresMongoDB连接?

保持打开一个MongoDB数据库连接

希望能帮助到你!

经历过同样的问题,我发现Mongolabbuild议应用以下设置 ,以保持Mongodb的连接在生产中保持连接:

 var options = { server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }, replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } } }; mongoose.connect(secrets.db, options); 

我希望这会帮助你,或其他人有这个“拓扑被摧毁”的问题。

我有同样的问题。 然后我有想法升级我的mongoose库。 但是,当我运行npm安装mongoose出现错误“… kerberos错误(gssapi / gssapi.h文件未find)…”。 所以在经过一番研究之后,我发现要解决的办法就是运行apt-get install libkrb5 -dev或者安装Hat Hat yum install krb5 -devel。 在我做了npm安装mongoose和解决我的问题