2013-03-23 19 views
5

Mi chiedo se è possibile eseguire mongodump/mongorestore dall'interno di nodejs. Probabilmente non è proprio una cosa da mangusta in quanto non è proprio quello che fa la mangusta. Ma chiedendosi se c'è un modo per eseguire questi comandi dal driver mongodb nodejs.mongodump/mongorestore da NodeJS o mangusta

sembra che io possa fare questo come ultima risorsa: How do I execute the mongodump command programmatically from node.js?

+1

'Tuttavia, dovrei menzionare che è possibile implementare il backup e il ripristino dei dati di mongodb da soli con il driver node.js'. Immagino tu voglia dire senza mongoback/maongorestore. Come mai? Hai un esempio/collegamento rapido? Grazie. – lostintranslation

+0

Oh ok capisco cosa stavi dicendo. Grazie per l'aiuto. – lostintranslation

risposta

6

Quando si dice 'from node.js' Presumo intendi chiamare il comando mongodump/mongostore dall'applicazione node.js.

Poiché mongodump e mongostore sono applicazioni da riga di comando. L'unico modo per "eseguirli" da node.js consiste nell'utilizzare la soluzione che hai già trovato qui.

Vale a dire, utilizzando child_process.spawn poiché nessuno ha ancora creato un collegamento node.js per loro.

Non lo userei come "l'ultima risorsa" poiché fa esattamente quello che ti serve. Tuttavia, dovrei menzionare che puoi implementare il backup e ripristinare i dati mongodb con facilità con lo node.js driver. Cioè, scorrere le collezioni e memorizzarle, fare il contrario per ripristinare un backup.

Tuttavia, suggerisco fortemente di non farlo. Il problema con l'approccio suggerito nella domanda a cui ti sei collegato è relativamente minore. L'ho visto usato (beh, qualcosa di simile) nella produzione di me stesso e non c'erano problemi.

2

Ho scritto un modulo minuscolo su questo: https://github.com/meryn/mongo-utils. Analizza la stringa di connessione mongo per te.

+0

+1 bello! provandolo ora. –

+0

Purtroppo, senza [hacking] (https://groups.google.com/forum/#!msg/angular/wZQY1XmstKo/4Kny9Rf4XOQJ) e2e, non riesco a farlo funzionare, dato che e2e non funziona bene con requirejs. –