2013-03-23 2 views
80

Gibt es eine einfache Möglichkeit, die Daten von einer Meteor Deployed App zurückzusetzen?Meteor App - Zurücksetzen des DB einer bereitgestellten App

Also, zum Beispiel, wenn ich eine App mit dem Namen test.meteor.com bereitgestellt hätte - wie könnte ich einfach die Daten zurücksetzen, die von dieser App gesammelt wurden?

Vor Ort laufe ich meteor reset, aber ich bin mir nicht sicher, was in der Produktion zu tun ist.

Antwort

108

Wenn Sie Ihre App mit Ihnen könnten Sie dies tun in Ihrem Projektverzeichnis

meteor deploy test.meteor.com --delete 
meteor deploy test.meteor.com 

Die erste löscht die App so sein ganz leer. Der zweite stellt eine neue Instanz davon zurück.

+0

Hey @akshat, denken Sie http://stackoverflow.com/questions/10214385/how-does-meteor-work/ wieder geöffnet werden sollte? –

+0

das scheint ein bisschen wie ein Hack. Gibt es keinen saubereren Weg? – dcsan

+0

Wird dieser Code dazu führen, dass die URL vorübergehend verfügbar ist? – merlinpatt

43

ein Weg ist, um sich an die Mongo Instanz anmelden und die entsprechenden Daten so etwas wie pro Sammlung löschen:

$ meteor mongo APP.meteor.com 
> db.users.drop() 
> db.xxx.drop() 

Sie könnten fallen nur die ganze DB, aber das würde ihre env zu verwirren und Sie haben zu --delete die App und re-deploy sowieso.

+2

Dies sollte die akzeptierte Antwort sein, Sie erspart mir einen Wiederaufbau + Reupload, danke! – saimeunt

+0

dies in der Produktion mit angemeldeten Benutzern tun ist eine schlechte Sache! – Adaptabi

+2

@DotNetWise: Sie sollten keine Produktion APP.meteor.com haben. Im besten Fall hast du dort eine Beta, und da es eine Beta ist, wissen die Leute Schluckauf zu erwarten (wenn ihr gesamter Account und alles, was sie jemals gelöscht haben, als Schluckauf gilt. Stell dir vor, wenn Facebook das getan hätte - ich frage mich wie viele Leute würde mich bemühen, alles zu bleiben und neu zu erstellen.) – ArtOfWarfare

3

Ich weiß, das ist ein bisschen alt, aber ich habe nur meinen Sammlungsnamen geändert. so in Ihrer /lib/collections.js Datei,

someCollection = new Mongo.Collection("originalcollection"); 

wird

someCollection = new Mongo.Collection("newcollectionname"); 

dies vorausgesetzt natürlich, dass die App die Daten für die Datenbank generiert.

+1

Sie haben die alte Sammlung hier nicht entfernt, Sie haben gerade eine neue leere erstellt. Wenn Sie dies in einer App getan haben, die auf einem Server ausgeführt wird (und nicht nur lokal), haben Sie weiterhin Daten auf Ihrem Server in einer Sammlung namens "originalcollection". – kahmali

+1

Yeah @rose, ich erkenne das, aber der Punkt ist, dass es einfach und schnell ist, wenn Sie etwas testen müssen. Wie andere darauf hingewiesen haben, verwenden Sie "myapp.meteor.com" nicht für die Produktion. Und wenn Sie das täten, würden Sie definitiv nicht einfach eine Produktionsdatenbank löschen wollen. Ich tue diese Strategie, um sicher neue Dinge mit meinem Modell auszuprobieren, ohne Daten zu kompromittieren. Meine Antwort war nicht so schlecht, dass es eine Abstimmungsentscheidung verdient hätte, da es ein viel sicherer Weg ist, mit Produktionsdaten umzugehen. Sie können dann immer die spezifische Sammlung fallen lassen, wie @ dcsans Kommentar erklärt – Dave

+1

scheint wie ein schneller Hack, den Sie verwenden können, wenn Sie wissen, was Sie tun :) upvoted, um den Downvote auszugleichen :) – dcsan

1

einfach können Sie Ihren Meteor Zugriff DB als

production-db-d2.meteor.io:27017/XYZ_meteor_com

wo XYZ = Ihre Subdomain

für die Authentifizierung Verwenden Sie Meteor Auth (Benutzername & Passwort)

Sie können acce ss es von rockmongo, robomogo, mongoui, etc. Werkzeuge.

Um den Zugriff von der Kommandozeile

Erste Authentifizieren von Benutzernamen eingeben, Passwort von Meteor

$ Meteor Login

Dann

$ Meteor Mongo XY Z.meteor.com