Meteor:如何在启动时删除所有Mongo集合并清除所有数据?

时间:2014-05-27 14:03:36

标签: mongodb meteor

我有一个Meteor应用程序,它在启动时从JSON API配置自己。为了正确协调所有客户端,它构建了几个Mongo集合并在其中存储数据,然后客户也订阅这些数据。但是,如果Meteor应用程序重新启动,我希望它能够清理数据库并从头开始重新配置。

每次重启服务器代码时,如何让Meteor删除所有数据并从干净的平板开始?

3 个答案:

答案 0 :(得分:6)

您是否考虑过使用Meteor.startup服务器端?

它允许您注册每次重新启动服务器时都会执行的回调。

然后你可以在里面使用MyCollection.remove({})消灭所有内容。

以下一段代码清除了每个全新注册的Meteor.Collection(即使用MyCollection=new Meteor.Collection("collection-name")):

Meteor.startup(function(){
    var globalObject=Meteor.isClient?window:global;
    for(var property in globalObject){
        var object=globalObject[property];
        if(object instanceof Meteor.Collection){
            object.remove({});
        }
    }
});

答案 1 :(得分:0)

如果你真的想删除每个集合而不是删除对象,你可以改为:

Meteor.startup(function(){
    var globalObject=Meteor.isClient?window:global;
    for(var property in globalObject){
        var object=globalObject[property];
        if(object instanceof Meteor.Collection){
            object.rawCollection().drop();
        }
    }
});

这将确保删除任何已从代码中删除的集合。

答案 2 :(得分:0)

对于2017年来到这里的人,还可以选择使用流星cli的meteor reset命令。

http://docs.meteor.com/commandline.html#meteorreset

  

流星重置

     

将当前项目重置为新状态。删除本地mongo   数据库中。

     

这会删除您的数据!确保您没有任何信息   通过运行meteor mongo来关心你当地的mongo数据库。从   mongo shell,使用show collections和db.collection.find()来实现   检查你的数据。