Voglio importare alcuni dati da varie posizioni e pomparli in MongoDb e alcuni servizi cloud.
I dati iniziano come JSON, leggo quel JSON, creo alcuni oggetti in mongo, vai al livello successivo nel JSON, creo alcuni oggetti in mongo con un riferimento al livello genitore, quindi al livello successivo, esegui il Lo stesso vale per la ricerca di alcuni servizi REST, idratare gli oggetti di livello inferiore in Mongo, estrarre alcune immagini da un altro servizio, inviarle a un servizio cloud aggiungere un riferimento agli oggetti di livello inferiore in mongo ... ecc. ecc.
Tutto questo deve accadere in sequenza a causa della struttura delle cose.
Ho provato a farlo in un programma di un nodo monolite, andando al passo successivo nella promessa restituita. Ma questo sembrava brutto e anche era piuttosto buggy. Il codice era fugace anche da guardare ed era fondamentalmente un imbarazzo dovuto alla pura frenesia della nidificazione e totale disprezzo per tutti i disegni di design sin dalla notte dei tempi.
Da allora ho letto sull'API di Streams. Ma dato che sono un nubz di NodeJs, non so davvero se i miei piani qui sono un abuso di Stream o in realtà ciò per cui sono stati creati?
Il mio design sarebbe:
Per ogni fase del processo: crea una classe in grado di acquisire alcuni dati, lavorarci sopra e poi ometterla una volta eseguita.
dall'iniziale pull di JSON I possono reindirizzare i risultati in una catena di queste classi, ogni classe può "visitare" il blocco JSON e lavorarci come meglio crede. Alla fine della catena tutto il JSON sarebbe stato consumato e tutti i miei oggetti sarebbero stati idratati e processati.
Poiché i flussi sono consapevoli della pressione di ritorno, andranno al proprio ritmo alimentando i dati quando è pronto per il passaggio successivo per occuparsi delle cose. Suona come cray cray o sono sulla strada giusta?
[UPDATE]
Ho appena visto questo che probabilmente è un percorso molto meno complesso da fare: