我目前正在开发Node.js应用程序。我使用connect-mongo和Express来处理我的会话存储。我也在使用Mongoose进行其他数据库操作。
但是,当我重新启动服务器以测试新功能时,旧的会话数据仍然存在。这导致数据不一致和一些棘手的错误。
因此,当服务器首次启动时,我希望能够清除Mongo数据库中sessions集合中的所有数据。
我知道,使用Mongoose,我可以做这样的事情来清除一个集合:
User.remove({}, function (error) {
console.log('Emptied user collection')
});
但是,我不知道如何在不声明其架构的情况下获取对集合的引用。
有谁知道我怎么做这个工作?或者我应该采取一些完全不同的方法来处理所有这些问题?
答案 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()
。