Je connais les flux de nœuds, mais je me bats sur les meilleures pratiques pour l'abstraction de code que je réutilise beaucoup dans une étape de tuyau unique.Nœud - Résumé des étapes de tuyau dans la fonction
Voici une version allégée de ce que je vous écris aujourd'hui:
inputStream
.pipe(csv.parse({columns:true})
.pipe(csv.transform(function(row) {return transform(row); }))
.pipe(csv.stringify({header: true})
.pipe(outputStream);
Le travail réel se produit dans transform()
. Les seules choses qui changent vraiment sont inputStream
, transform()
et outputStream
. Comme je l'ai dit, c'est une version dépouillée de ce que j'utilise réellement. J'ai beaucoup d'erreur de gestion et d'enregistrement sur chaque étape de tuyau, ce qui est finalement la raison pour laquelle j'essaie de faire abstraction du code.
Ce que je suis à la recherche d'écrire est une seule étape de tuyau, comme ceci:
inputStream
.pipe(csvFunction(transform(row)))
.pipe(outputStream);
Ce que j'ai du mal à comprendre comment transformer ces étapes de tuyau en une seule fonction qui accepte un flux et retourne un flux J'ai regardé des bibliothèques comme Through2 mais je ne suis pas sûr de savoir comment cela me mène là où j'essaye d'aller.
Comment passer la référence de transformation (ligne) dans le flux? Ne serais-je pas mieux d'utiliser un flux de transformation? J'ai lu que PassThrough est plus pour surveiller un flux que d'y travailler? – AdamPat
Dépend de la façon dont vous empaquetez la gestion de votre flux. Placez simplement la fonction dans un endroit visible ou placez-la comme référence. Et bien sûr vous pouvez implémenter votre solution dans un flux de transformation (regardez ici https://nodejs.org/api/stream.html#stream_implementing_a_transform_stream). Montrer l'idée avec un flux PassThrough était juste le moyen le plus simple que j'ai trouvé. – Marc