清除会话存储

时间:2014-06-25 19:27:39

标签: javascript node.js mongodb session mongoose

我目前正在开发Node.js应用程序。我使用connect-mongo和Express来处理我的会话存储。我也在使用Mongoose进行其他数据库操作。

但是,当我重新启动服务器以测试新功能时,旧的会话数据仍然存在。这导致数据不一致和一些棘手的错误。

因此,当服务器首次启动时,我希望能够清除Mongo数据库中sessions集合中的所有数据。

我知道,使用Mongoose,我可以做这样的事情来清除一个集合:

User.remove({}, function (error) {
  console.log('Emptied user collection')
});

但是,我不知道如何在不声明其架构的情况下获取对集合的引用。

有谁知道我怎么做这个工作?或者我应该采取一些完全不同的方法来处理所有这些问题?

1 个答案:

答案 0 :(得分:0)

好的,所以我想我找到了解决问题的方法。

在不声明其架构的情况下获取对集合的引用实际上非常简单。在我提出这个问题之前,不确定我在研究中是如何发现这一点的...所以这里是我一直在问的完整解决方案:

mongoose.connection.db.collection('sessions', function (error, collection) {
  if (error) {
    console.error('Problem retrieving sessions collection:', error);
  } else {
    collection.remove({}, function (error) {
      if (error) {
        console.error('Problem emptying sessions collection:', error);
      } else {
        console.log('Emptied sessions collection');
      }
    });
  }
});

但是,在我的情况下,我实际上想要删除数据库中的所有数据,并且一次尝试这样做一个集合(因为我知道如何清除集合)。相反,我只需要使用db.dropDatabase()