#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}`);
}
});