javascript - Mongolab nodejs拓扑被破坏

标签 javascript node.js mongodb twitter mlab

我一直在使用 nodejs 与 twitter 交互。我正在尝试在 mongolab mongodb 数据库中记录一些重要的公共(public)用户数据。出于某种原因,我不断收到“拓扑破坏错误”,我不太确定这是为什么。

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();
  }
});

如您所见,程序建立了与数据库的连接。定义集合,然后遍历多个 Twitter 帐户并记录相关信息。 twitter 请求成功,mongodb 可以处理简单的请求。如果您对我收到此回复的原因有任何想法,请回答。

最佳答案

我遇到了类似的问题,在您完成所有对 twitter 的请求并插入数据之前,您的数据库连接已关闭。

我最终像文档中那样向我的函数发送回调。

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

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

这只是调用 db.close()

的匿名函数

这里有一些其他链接可能会帮助您打开/关闭数据库连接

When to close MongoDB database connection in Nodejs

Why is it recommended not to close a MongoDB connection anywhere in Node.js code?

Keeping open a MongoDB database connection

希望对你有帮助!

关于javascript - Mongolab nodejs拓扑被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425739/

相关文章:

java - MongoDB+Azure+Android : Error: com. mongodb.MongoException:不与master对话并且重试用完

javascript - 我似乎无法在append()方法中将两个字符串连接在一起

javascript - 添加悬停延迟 - 菜单 jquery

javascript - 从 JSON 中选择不同的值

json - Heroku 不读取 Node 版本

javascript - 你如何使用 JS Promises 在 API 返回值时继续从 API 请求?

node.js - Express.js是静态文件中间件使用的session和cookie?

MongoDB更新。 _id 上的 setOnInsert Mod 不允许

javascript - IE8 返回 NaN

python - 蒙戈引擎 : database names cannot contain the character '.'