Список папок в Google Cloud Storage Bucket с помощью Node.js - PullRequest
0 голосов
/ 02 июня 2018

Я искал способ извлечения только каталогов внутри корзины, но не того, что в них.

Согласно Документам Google Cloud Storage можно фильтровать по префиксу с помощью:

const Storage = require('@google-cloud/storage');  

const storage = new Storage();

const options = {
  prefix: prefix,
  delimiter: '/'
};

storage
  .bucket(bucketName)
  .getFiles(options)
  .then(results => {
    const files = results[0];

    console.log('Files:');
    files.forEach(file => {
      console.log(file.name);
    });
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

Я пробовал с несколькими комбинациями, используя префикс: "", или префикс: "*", или префикс: "\" и т. Д., Но я не могу заставить его вернуть только папки.

Кто-нибудь мог это сделать?

1 Ответ

0 голосов
/ 14 июня 2018

На самом деле, метод getFiles не читает папки так, как вы их используете.Я адаптировал код в этой записи для печати своих ведер:

const storage = require('@google-cloud/storage');

const projectId = 'PROJECT_ID';
const gcs = storage({
    projectId: projectId
});

let bucketName = 'BUCKET_NAME';
let bucket = gcs.bucket(bucketName);
// bucket.getFiles({}, (err, files,apires) => {console.log(err,files,apires)});


let cb=(err, files,next,apires) => {
    /*console.log('Err:');
    console.log('Files:');
    console.log(files);*/
    console.log('Apires:');
    console.log(typeof apires);
    console.log(apires);
    console.log(apires.prefixes);
    if(!!next)
    {   
        bucket.getFiles(next,cb);
    }   
}

bucket.getFiles({delimiter:'/', autoPaginate:false}, cb);

/* 
// List folders inside folders
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);
*/ 

И даже если это не полезно в этом случае, я предлагаю вам использовать регулярное выражение для определения конкретных форматов имен.

...