3
votes

Répertorier les fichiers modifiés après un horodatage particulier dans le bucket Google Cloud Storage

Je souhaite répertorier les fichiers qui ont été modifiés / ajoutés dans un bucket Google Cloud Storage après un horodatage particulier dans node.js. Je parcourais la documentation https://cloud.google.com/storage/docs/how -à mais n'a trouvé aucun mécanisme pour cela.

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucketName = 'my-bucket';
const [files] = await storage.bucket(bucketName).getFiles();

Comment répertorier les fichiers qui ont été ajoutés après un horodatage dans un bucket?


0 commentaires

3 Réponses :


3
votes

Cela ne semble pas possible avec l'API de liste list . La documentation ne dit rien sur le filtrage des objets avec une date.

Il est courant de stocker des données sur tous les fichiers téléchargés dans une base de données, ce qui est plus facile à interroger pour les propriétés du fichier que vous souhaitez stocker. Vous pouvez même utiliser un déclencheur Cloud Functions pour écrire automatiquement un enregistrement dans la base de données pour chaque téléchargement de fichier.


0 commentaires

2
votes

Il n'y a pas de fonction directe pour le faire, comme l'a souligné Doug Stevenson, mais vous pouvez en fait savoir quand le fichier a été modifié pour la dernière fois en recherchant ses métadonnées. Par exemple, voir cet extrait de code:

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucketName = 'your-bucket-name';


storage.bucket(bucketName).getFiles(function(err, files) {
  if (!err) {
    // files is an array of File objects.
         files.forEach(function (file){
                file.getMetadata(function (err, metadata){
                        // TODO: Save only the files before certain metadata.updated date
                        console.log("File named " + metadata.name +
                                    "last updated on: " + metadata.updated);
                });
         });
  }
});

Ensuite, c'est à vous de créer une condition dans la fonction de rappel getMetadata pour ne lister / conserver les fichiers qu'après un certain metadata.update seuil de date.


0 commentaires

0
votes

Il n'y a pas de support API direct pour cela. Cependant, si vous devez effectuer cette requête fréquemment, vous pouvez créer manuellement un flux de travail pour conserver un index. Il s'agirait d'une petite application stockant un index abonné aux notifications sur les modifications apportées au compartiment, et il aurait une méthode API qui récupérerait les objets triés par date.


0 commentaires