简体   繁体   English

将数据从AWS S3加载到jstree

[英]Load data from aws S3 to jstree

I have several directories in aws S3 bucket. 我在aws S3存储桶中有几个目录。 I need to load the same structure to jsTree (jquery plugin). 我需要将相同的结构加载到jsTree(jquery插件)中。

The problem I have is to how to identify the parent node of each element as aws S3 (listObjectsV2) identifies each elements as separate objects and not directories. 我的问题是如何将每个元素的父节点标识为aws S3(listObjectsV2),将每个元素标识为单独的对象而不是目录。

Here is an example of what it returns 这是返回值的示例

 { 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' } 

Eventhough all these files are under 'private/Nifla' directory, they are separate objects to S3. 尽管所有这些文件都位于“ private / Nifla”目录下,但它们是S3的单独对象。

Here is how I tried to adjust the structure to fit jsTree. 这是我尝试调整结构以适合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; } 

This results in the following structure. 这导致以下结构。

jsTree结构

Problem is how to identify the parent directory of each file. 问题是如何识别每个文件的父目录。 Can anyone suggest a solution to this? 有人可以提出解决方案吗? Thanks 谢谢

You can configure prefix string in your listObjectsV2 , so that it will return objects beginning with the prefix string. 您可以在listObjectsV2中配置前缀字符串,以便它将返回以前缀字符串开头的对象。 lets say you have content like /bucketName/folder1/file1.txt , If you configure prefix as folder1 , it will return all objects inside folder1 including folder1. 假设您具有/bucketName/folder1/file1.txt之类的内容,如果将前缀配置为folder1,它将返回folder1内的所有对象,包括folder1。 https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjectsV2-property https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjectsV2-property

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM