2 votes

Comment lister les répertoires dans un seau GCS en utilisant NodeJS

I Si vous utilisez la bibliothèque client GCS de NodeJS et que vous voulez lister les répertoires dans votre seau, comment faites-vous ?

4voto

srfrnk Points 148

Tout d'abord, ajoutez la dépendance de la bibliothèque client GCS NodeJS dans votre fichier de configuration. package.json en exécutant :

npm -i @google-cloud/storage --save

Puis ajoutez ceci dans votre code pour lister tous les fichiers :

const storage = require('@google-cloud/storage');
...
const projectId = '<<<<<your-project-id-here>>>>>';
const gcs = storage({
    projectId: projectId
});

let bucketName = '<<<<<your-bucket-name-here>>>>>';
let bucket = gcs.bucket(bucketName);
bucket.getFiles({}, (err, files,apires) => {console.log(err,files,apires)});

Cela donnera tous les fichiers avec le chemin complet dans files .

Pour lister uniquement les répertoires, vous devez contourner une bizarrerie de la bibliothèque client qui vous demande de ne pas utiliser la pagination automatique et qui renvoie un argument supplémentaire à la CB. Pour ce faire, modifiez le code comme suit :

let cb=(err, files,next,apires) => {
    console.log(err,files,apires);
    if(!!next)
    {
        bucket.getFiles(next,cb);
    }
}
bucket.getFiles({delimiter:'/', autoPaginate:false}, cb);

Cela renverra une liste de répertoires sous le chemin Root avec des traces / en apires.prefixes .

Pour lister uniquement les répertoires sous foo/ l'annuaire utilise ce code :

let cb=(err, files,next,apires) => {
    console.log(err,files,apires);
    if(!!next)
    {
        bucket.getFiles(next,cb);
    }
}
bucket.getFiles({prefix:'foo/', delimiter:'/', autoPaginate:false}, cb);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X