如何设置connect-mongo(或使用mongoose中的会话)

时间:2012-09-23 17:21:45

标签: mongodb express mongoose connect

我正在使用ExpressJS和Mongoose。

var MongoStore = require('connect-mongo')(express);
var sessionStore = new MongoStore({db: 'myappsession'});

app.use(express.session({ secret: "myappsecret", store:sessionStore }));

这导致“MongoError:错误:未经授权的数据库”。我想我需要传递我的登录凭据。我也有,

var mongoose = require('mongoose');
var db = mongoose.createConnection('<omitted username, password and address>', 'myappsession');

我猜connect-mongo需要这些信息才能登录我的数据库来创建会话存储?

问题

如何通过connect-mongo登录信息?或者我做错了吗?

2 个答案:

答案 0 :(得分:3)

就我而言,由于我已经在积极使用Mongoose,我最终使用了Mongoose的解决方案。

<强> 1。安装session-mongoose

https://github.com/donpark/session-mongoose

<强> 2。使用本教程作为指南。

http://mikevalstar.com/Blog/107/Coding_with_Nodejs_Part_31_Mongoose_Sessions

第3。特别是,我对本教程的这一行有疑问。

url: "mongodb://localhost/mv"

这应该是类似的,

url: "username:password@url/testdatabase"

然后将会话存储在集合“sessions”中名为“”testdatabase“的数据库中。

我希望这个答案可以帮助别人避免一些挫败感。 :)

答案 1 :(得分:1)

您需要使用MongoDB URI。看看这里的文档: http://www.mongodb.org/display/DOCS/Connections

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

因此,如果您要连接到单个服务器,只需使用:

mongoose.createConnection('mongodb://[username:password@]host1[:port1]', 'myappsession');