У меня есть несколько каталогов в aws S3 bucket. Мне нужно загрузить ту же структуру в jsTree (плагин jquery).
Проблема, с которой я столкнулся, заключается в том, как идентифицировать родительский узел каждого элемента, так как aws S3 (listObjectsV2) идентифицирует каждый элемент как отдельные объекты, а не каталоги.
Вот пример того, что он возвращает
{ Key: 'private/Nifla/2)-M1-Kinematics-of-a-Particle-moving-in-a-Straight-Line-Questions.docx',
0|server | LastModified: 2018-09-04T06:24:18.000Z,
0|server | ETag: '"c3dbdb890c19ce5e289227e96a702dc8"',
0|server | Size: 1230564,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/2)-M1-Kinematics-of-a-Particle-moving-in-a-Straight-Line.pptx',
0|server | LastModified: 2018-09-04T06:16:45.000Z,
0|server | ETag: '"84aaa52152fcbc36768fca819e1bf84d"',
0|server | Size: 1166244,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/3)-M1-Dynamics-of-a-Particle-moving-in-a-Straight-Line-Questions.docx',
0|server | LastModified: 2018-09-04T06:29:21.000Z,
0|server | ETag: '"5d078bebd1edc40e5db9ff5f489df610"',
0|server | Size: 2247048,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/3)-M1-Dynamics-of-a-Particle-moving-in-a-Straight-Line.pptx',
0|server | LastModified: 2018-09-04T06:15:49.000Z,
0|server | ETag: '"d27ff757a5c6bf05d9e02ec80529dfad"',
0|server | Size: 1557098,
0|server | StorageClass: 'STANDARD' },
0|server | { Key: 'private/Nifla/6)-M1-Vectors-Questions.docx',
0|server | LastModified: 2018-07-24T05:44:39.000Z,
0|server | ETag: '"1e146a050cc4d4a8fd8919bb4fc0f151"',
0|server | Size: 2570995,
0|server | StorageClass: 'STANDARD' }
Несмотря на то, что все эти файлы находятся в каталоге private / Nifla, они являются отдельными объектами для S3.
Вот как я пытался настроить структуру, чтобы она соответствовала jsTree.
function s3ToJsTreeJsonConvertor(s3ObjectList){
var data = []
var files = s3ObjectList.Contents;
console.log('----files-----');
console.log(files);
for (var i = 0; i < files.length; i++) {
var Key = files[i].Key
var filterRegex = new RegExp('(.pdf)');
var isFolder = filterRegex.test(Key);
if(!isFolder){
continue;
}
console.log("///////////////",Key);
var res = Key.split("/");
console.log(">>>>>>>>>>>>>>>",res);
for (var j=0;j< res.length;j++){
var isFile = false;
if(j===res.length-1){
isFile = true;
}
if(j===0){
data.push({ "id" : "node_"+i+"_"+j, "parent" : "#", "text" : res[j],"data":{"key":Key,"isFile":isFile } });
continue;
}
data.push({ "id" : "node_"+i+"_"+j, "parent" : "node_"+i+"_"+(j-1), "text" : res[j],"data":{"key":Key,"isFile":isFile } });
}
}
return data;
}
В результате получается следующая структура.
Проблема в том, как определить родительский каталог каждого файла. Кто-нибудь может предложить решение этой проблемы?
Спасибо