2013-09-01 34 views
4

我知道有很多關於此問題的主題,但其中任何一個解決了我的問題。 我實際上是試圖在Heroku上部署我的項目,這對我來說是新事物。收集時設置TTL索引時出錯:會話

我的項目是基於連接到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}); 

任何幫助將是非常讚賞!

+0

傳遞給'mongo.db()'函數的實際字符串是什麼? – Michael

+0

它基本上是: 'mysql2:// LOGIN:PASSWORD @ HOST:PORT/DB_NAME?auto_reconnect = true' – Nox

+0

不應該「mysql2」是「mongo」嗎? – Michael

回答

1

原來,我沒有配置同樣在mongodb下的會話存儲和相同的參數。

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

不,我使用MongoSkin,我鏈接到了項目的github存儲庫。 https://github.com/kissjs/node-mongoskin – Nox