Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – MongoDB:在集合上设置TTL索引时出错:sessions大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
最初这个错误消息开始显示很少,但是开始出现更多的时间,现在出现4/5次我运行我的应用程序。

我正在使用Mongo处理我的会话存储,据了解,TTL索引用于使会话数据过期。

/home/dan/dev/audio-wave/node_modules/connect-mongo/lib/connect-mongo.js:161
            throw new Error('Error setTing TTL index on collection : ' + s
                  ^
Error: Error setTing TTL index on collection : sessions
at /home/dan/dev/audio-wave/node_modules/connect-mongo/lib/connect-mongo.js:161:23
at /home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1404:28
at /home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1542:30
at /home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/@R_618_10930@or.js:159:22
at commandHandler (/home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/@R_618_10930@or.js:678:48)
at Db._executeQueryCommand (/home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1802:12)
at @R_618_10930@or.nextObject (/home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/@R_618_10930@or.js:729:13)
at @R_618_10930@or.toArray (/home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/@R_618_10930@or.js:158:10)
at @R_618_10930@or.toArray (/home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/scope.js:10:20)
at /home/dan/dev/audio-wave/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1541:65

这是将其连接在一起的代码

var sessionStore = new MongoStore({ db: 'audio-drop' }),cookieParser = express.cookieParser('waytoblue'),SessionSockets = require('session.socket.io'),sockets = new SessionSockets(io,sessionStore,cookieParser);

app.set('port',process.env.PORT || 3000);
app.set('views',__dirname + '/views');
app.set('view ENGIne','ejs');
app.use(express.favicon());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(path.join(__dirname,'public')));
app.use(express.logger('dev'));
app.use(cookieParser);
app.use(express.session({
  store: sessionStore
}));

根据来自Mongo sHell的db.version(),我正在运行2.4.9,我使用的是连接的mongo版本0.4.0。

似乎有一些人遇到这个问题,但似乎大多数人都解决了凭据问题,我的本地mongo没有安全认证,所以这不是问题。有任何想法吗?

解决方法

正如我在您的评论中所说,本质上Express是在会话存储完全连接之前接收连接。解决方案是在允许应用程序开始监听之前等待连接发生。

您可以通过在MongoStore创建上使用回调或传递已经活动的连接来避免此问题。

示例使用COnnect-mongo的回调

var sessionStore = new MongoStore({ url: 'someConnectionUrl',db: 'audio-drop' },function(E) {

  var cookieParser = express.cookieParser('waytoblue');
  app.use(cookieParser);

  app.use(express.session({
    store: sessionStore
  }));

  app.listen();
});

简单的蜜糖实例

var mongoose = require('mongoose');

mongoose.connect('localhost',function(E) {
  // If error connecTing
  if(E) throw e;

  var sessionStore = new MongoStore({ mongoose_connection: mongoose.connection }),cookieParser = express.cookieParser('waytoblue');

  app.use(cookieParser);

  app.use(express.session({
    store: sessionStore
  }));

  app.listen();
});

大佬总结

以上是大佬教程为你收集整理的node.js – MongoDB:在集合上设置TTL索引时出错:sessions全部内容,希望文章能够帮你解决node.js – MongoDB:在集合上设置TTL索引时出错:sessions所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。