与数据库的初始连接似乎可以通过以下方式验证:
mongoose.connect('mongodb://user:pass@localhost/traderdb/?authSource=admin', {
auth: {
authdb: "admin"
}
}, function(e) {
//other things
});
然后,当我尝试创建一个新会话并验证用户一切崩溃时,在mongo日志中我可以看到应用程序尝试使用traderdb
数据库而不是管理数据库使用mongodb进行身份验证,即使我正确设置了authSource,并且第一次使用相同的URI连接正常。
这是我初始化会话存储的地方。这是放在mongoose.connect
电话的回调中。
app.use(session({
secret: 'secrettexthere',
saveUninitialized: true,
resave: true,
store: new MongoStore({
url: 'mongodb://user:pass@localhost/traderdb/?authSource=admin',
db: 'traderdb',
collection: 'sessions',
auto_reconnect: true
})
}));
应用程序启动时没有任何操作失败,并且mongo日志确认已成功建立连接并使用admin数据库进行身份验证。然而,在那之后,当我尝试实际使用会话存储时,应用程序崩溃并出现错误Error: Error setting TTL index on collection : sessions
。在mongo服务器日志中,我可以看到我的应用程序尝试使用traderdb
而不是admin
作为身份验证源进行连接和身份验证。