在集合上设置TTL索引时出错:会话

时间:2013-09-01 14:07:04

标签: node.js mongodb heroku express

我知道有很多关于这个问题的话题,但其中任何一个都解决了我的问题。 我实际上是想在Heroku上部署我的项目,这对我来说是新的。

我的项目是一个基于连接到MongoDB数据库的Express API的node.js。 当我在我的数据库本地启动时(没有登录/密码)我没有这个错误,但是当我将它连接到heroku数据库时,我得到了一个:

Error: Error setting TTL index on collection : Session <MongoError: not authorized for query on app17713548.system.indexes>

我的package.json

"dependencies": {
    "express": "3.0.6",
    "mongodb": "1.3.19",
    "mongoskin": "0.5.0",
    "MD5": "1.0.3",
    "connect-session": "*",
    "connect-mongo": "0.3.3",
    "geoip-lite": "1.0.10"
},
"engines": {
    "node": "0.8.19",
    "npm": "1.1.65"
}

对于与我的数据库的连接,我使用的是MongoSkin,该行是:

mongo.db(conf.dbLogin+':'+conf.dbPassword+'@'+conf.dbAddr+':'+conf.dbPort+'/'+conf.dbName+'?auto_reconnect=true', {w: 1});

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

事实证明我没有使用相同的参数配置mongodb下的会话存储。

答案 1 :(得分:0)

也许您的连接字符串不正确。试试这个:

var mongodb = require("mongodb");

var db = new mongodb.Db(conf.dbName, new mongodb.Server(conf.dbAddr, conf.dbPort, {auto_reconnect:true}), {w:1});    
db.open(function(error){
  if (error){
    //handle
    return;
  }
  db.authenticate(conf.dbLogin, conf.dbPassword, function(error){
    if (error){
      //handle
      return;
    }
    //you are now connected!
  });
});