2013-03-23 13 views
5

Zastanawiasz się, czy można uruchomić mongodump/mongorestore z poziomu nodejs. Prawdopodobnie nie jest to manga, ponieważ tak naprawdę nie jest to czym jest mangusta. Zastanawiam się jednak, czy istnieje sposób na wykonanie tych poleceń od mongodb nodejs driver.mongodump/mongorestore z NodeJS lub mangusta

Wygląda jak mogę to zrobić w ostateczności: How do I execute the mongodump command programmatically from node.js?

+1

"Powinienem jednak wspomnieć, że za pomocą sterownika node.js można w prosty sposób zaimplementować tworzenie kopii zapasowych i przywracanie danych Mongodb. Zakładam, że masz na myśli bez mongobacku/maongorestore. Jak to? Masz szybki przykład/link? Dzięki. – lostintranslation

+0

Oh ok Widzę, co mówisz. Dzięki za pomoc. – lostintranslation

Odpowiedz

6

Kiedy mówisz 'from node.js' Zakładam, że oznaczać wywołanie polecenia mongodump/mongostore ze swojego node.js aplikacji.

Od mongodump i mongostore są aplikacjami wiersza poleceń. Jedynym sposobem na "wykonanie ich" z poziomu node.js jest skorzystanie z rozwiązania, które już tu znalazłeś.

To znaczy, używając child_process.spawn, ponieważ nikt jeszcze nie utworzył dla nich wiązania node.js.

Nie użyłbym go jako "ostatniej szansy", ponieważ spełnia on dokładnie to, czego potrzebujesz. Jednak powinienem wspomnieć o tym, że możesz sam bezpiecznie wykonać kopię zapasową i przywracając dane mongodb za pomocą node.js driver. To znaczy, iteruj po kolekcjach i przechowuj je, wykonaj odwrotną procedurę, aby przywrócić kopię zapasową.

Zdecydowanie sugeruję odrzucić to. Problem z podejściem sugerowanym w pytaniu, z którym się łączysz, jest stosunkowo niewielki. Widziałem, jak był używany (no, coś podobnego) w produkcji samemu i nie było problemów.

2

Napisałem mały moduł do tego: https://github.com/meryn/mongo-utils. Analizuje ciąg połączenia mongo dla ciebie.

+0

+1 miłe! wypróbować to teraz. –

+0

Niestety, bez [hackowania] (https://groups.google.com/forum/#!msg/angular/wZQY1XmstKo/4Kny9Rf4XOQJ) e2e, nie mogę tego uruchomić, ponieważ e2e nie gra dobrze z requirejs. –