我有一个Meteor应用程序,它在启动时从JSON API配置自己。为了正确协调所有客户端,它构建了几个Mongo集合并在其中存储数据,然后客户也订阅这些数据。但是,如果Meteor应用程序重新启动,我希望它能够清理数据库并从头开始重新配置。
每次重启服务器代码时,如何让Meteor删除所有数据并从干净的平板开始?
答案 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()来实现 检查你的数据。