【问题标题】:Error setting TTL index on collection : Session在集合上设置 TTL 索引时出错:会话
【发布时间】:2013-09-04 17:39:13
【问题描述】:

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

我的项目是基于 Express API 连接到 MongoDB 数据库的 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});

任何帮助将不胜感激!

【问题讨论】:

  • 传递给mongo.db()函数的实际字符串是什么?
  • 基本上是这样的形式:'mysql2://LOGIN:PASSWORD@HOST:PORT/DB_NAME?auto_reconnect=true'
  • “mysql2”不应该是“mongo”吗?
  • mongoskin 文档说使用“mongo”,而不是“mongodb”。
  • 不,它只是一个变量,实例化如 -> mongo = require('mongoskin');但也可以是 foo = require('mongoskin');

标签: node.js mongodb heroku express


【解决方案1】:

原来我没有配置同样在mongodb下的会话存储,参数相同。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 2013-11-30
    • 2014-04-30
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多