Приложение Meteor - сброс БД развернутого приложения

82

Есть ли простой способ сбросить данные из развернутого приложения Meteor?

Так, например, если бы я развернул приложение с именем test.meteor.com- как я мог бы легко сбросить данные, которые были собраны этим приложением?

Я работаю локально meteor reset, но не знаю, что делать на производстве.

CaptConrado
источник

Ответы:

108

Если у вас есть приложение, вы можете сделать это в каталоге своего проекта.

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

Первый удаляет приложение, поэтому все остается пустым. Второй развертывает его новый экземпляр.

Акшат
источник
Привет, @akshat, как вы думаете, нужно заново открыть stackoverflow.com/questions/10214385/how-does-meteor-work ?
Дэн Даскалеску
это похоже на взлом. нет более чистого способа?
dcsan
Приведет ли этот код к временному доступу к URL-адресу?
Мерлин-они-они -
это не имеет ничего общего со сбросом данных приложения в производственной среде, и я не понимаю, почему этот ответ получил так много голосов,
MickaelFM
43

один из способов - самостоятельно войти в экземпляр mongo и удалить соответствующие данные, например, для каждой коллекции:

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

вы можете просто отбросить всю БД, но это запутает их env, и вам --deleteвсе равно придется использовать приложение и повторно развернуть.

> db.dropDatabase()
dcsan
источник
2
Это должен быть принятый ответ, вы избавили меня от перестройки + повторной загрузки, спасибо!
saimeunt
делать это в продакшене с зарегистрированными пользователями - плохо!
Adaptabi
2
@DotNetWise: у вас не должно быть производственного приложения APP.meteor.com. В лучшем случае у вас есть бета-версия, а поскольку это бета-версия, люди знают, что следует ожидать таких сбоев (если вся их учетная запись и все, что они когда-либо делали, будут удалены, считается ошибкой. Представьте, если бы Facebook сделал это - интересно, сколько людей будет потрудиться остаться и воссоздать все.)
ArtOfWarfare
Отличное предложение - мне действительно нужно было просто удалить несколько баз данных.
ArtOfWarfare
3

Я знаю, что это немного устарело, но я только что изменил название своей коллекции. так что в вашем /lib/collections.jsфайле

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

становится

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

это, конечно, предполагает, что ваше приложение генерирует данные для базы данных.

Дэйв
источник
1
Вы не удалили старую коллекцию здесь, вы просто создали новую пустую. Если вы сделали это в приложении, запущенном на сервере (а не только локально), у вас все равно будут данные, сохраняющиеся на вашем сервере в коллекции с именем originalcollection.
kahmali
1
Да @krose, я это понимаю, но дело в том, что это легко и быстро, если нужно что-то протестировать. Как указывали другие, вы не используете myapp.meteor.comдля производства. И если бы вы это сделали, вы ОПРЕДЕЛЕННО не захотели бы просто удалить производственную базу данных. Я использую эту стратегию, чтобы безопасно пробовать новые вещи с моей моделью без ущерба для данных. ИМХО, этот ответ был не настолько плох, чтобы заслужить отрицательное голосование, поскольку это гораздо более безопасный способ иметь дело с производственными данными. тогда вы всегда можете удалить конкретную коллекцию, как объясняет комментарий @dcsan
Дэйв
1
похоже на быстрый прием, который вы можете использовать, если знаете, что делаете :) проголосовали за, чтобы сбалансировать отрицательное голосование :)
dcsan
1

Просто вы можете получить доступ к своей метеорной БД как

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

где XYZ = ваш субдомен

для аутентификации используйте meteor auth (имя пользователя и пароль)

Вы можете получить к нему доступ из rockmongo , robomogo , mongoui и т. Д.

Для доступа из командной строки

Сначала авторизуйтесь, введя имя пользователя, пароль метеора

$ meteor логин

потом

$ метеор монго XYZ.meteor.com

Нищит Дханани
источник