以前、Google Cloud Storageのサブディレクトリ一覧を、GCP Pyhtonライブラリを使って取得したのですが、そのNode.jsバージョンです。
Pythonバージョンはこちら
手順
GCP Node.js SDKのドキュメントにサンプルがあるので親切ですね。
bucket.getFiles()
を使い、「autoPaginate」を「false」、「delimiter」を「/」、「prefix」を「親ディレクトリ+/」にします。
すると、戻り値の「apiResponse」の「prefixes」配列に、サブディレクトリ一覧が入ります。
Promiseを使った場合、「apiResponse」は、戻り値配列の3番目の値になります。
以上を踏まえたコードは下記になります。
import { Storage } from '@google-colud/storage'; const storage = new Storage(); const bucket = storage.bucket('xxxx'); async (()=>{ const files = await bucket.getFiles({ autoPaginate: false, delimiter: '/', prefix: 'a/' }); files[2].prefixes.forEach((dir:any)=>{ console.log(dir); } // xxxx/a/01/ // xxxx/a/02/ })();
感想など
クラウドストレージにおけるディレクトリについてのハマりポイントは、Pythonの記事を参照してください。
Python・JavaScript共に、結局同じAPIを呼び出しているのですが、言語によってライブラリの書き方が違うんですね。
統一して欲しい気もするのですが、言語で閉じているからこそ、スピーディーな更新ができるんでしょうね。
今回初めて、GCP Node.js SDKのPromiseを使いました。戻り値はコールバックのerr以降の引数が、配列で返ってくるので、データ取得はres[0]
といった書き方をします。
戻り値が配列でなくオブジェクトだったらもっとカッコよかったのになぁ…。
関連記事
www.kwbtblog.com www.kwbtblog.com www.kwbtblog.com