Облачное хранилище Google сортирует объекты по дате их последнего изменения

#javascript #node.js #google-cloud-platform #google-cloud-storage

#javascript #node.js #google-облачная платформа #google-облачное хранилище

Вопрос:

Как мне отсортировать файлы по дате их последнего изменения? Приведенный ниже код просто сортирует их по расширению (json или jpg)

 function ambilData(req, res) {
  let hasil;

  ember
  .getFiles(options)
  .then(results => {
    const files = results[0];
    const tempArr = [];
    let jsonArr = [],
        jpgArr = [];

    files.forEach(file => {
      let nama = file.name,
          mapped = nama.slice(9, nama.length);

      tempArr.push(mapped)
    });

    tempArr.shift();
    tempArr.forEach(file => {
      if (file.split('.')[1] == 'json') {
        jsonArr.push(file)
      } else {
        jpgArr.push(file)
      }
    })

    res.send(listToMatrix(jsonArr, jpgArr))
  })
  .catch(err => {
    console.error('ERROR:', err);
  });
}
  

Я использую Node.Мы используем JS и собираемся использовать express для записи приведенного выше кода в REST API.

Комментарии:

1. Попробуйте получить метаданные для каждого объекта и посмотрите, есть ли там дата, которую можно использовать для сортировки результатов. cloud.google.com/nodejs/docs/reference/storage/2.3.x /…

Ответ №1:

Проверьте, обновлены ли метаданные в ответе, и используйте это

 const data = [{file:"a",metadata:{updated:"2019-03-23T17:42:53.846"}},{file:"b",metadata:{updated:"2017-03-23T17:42:53.846"}},{file:"c",metadata:{updated:"2016-03-23T17:42:53.846"}}];
//sorts ascending
let sortAsc = data.sort((a,b) => new Date(a.metadata.updated) - new Date(b.metadata.updated));
//sorts descending
let sortDesc = data.sort((a,b) => new Date(b.metadata.updated) - new Date(a.metadata.updated));
  

Ответ №2:

Как насчет следующего:

 // Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Your Google Cloud Platform project ID
const projectId = 'YOUR PROJECT';

// Creates a client
const storage = new Storage({
  projectId: projectId,
});

// The name for the new bucket
const bucketName = 'YOUR-BUCKET';
const bucket = storage.bucket(bucketName);
bucket.getFiles(null, (err,data) => {
    data.sort((a, b) => {
        if (a.metadata.updated > b.metadata.updated) {
            return 1;
        }
        if (a.metadata.updated < b.metadata.updated) {
            return -1;
        }
        return 0;
    });
    for (file of data) {
        console.log(` ${file.metadata.name} - ${file.metadata.updated}`);
    }
});