Задать вопрос
thehighhomie
@thehighhomie

Древовидная структура как на Google Drive?

Привет ребят!

Делаю приложение в котором есть возможность создания папок и файлов, это похоже на гугл диск.

Структура будет в обычном JSON.

Мне не понятно как лучше описать структуру для файлов в корнивой директории, ведь в гугл диске когда заходишь в корневую директорию, то файлы и папки лежат друг с другом, и получается, что файлы в корневой директории по логике не имеют категорий, так как не лежат в корневом уровне.

У меня были мысли сделать общую категорию:
[
  {
    title: '',
    name: 'root',
    folders: [
      {
        title: 'Папка-1',
        name: 'folder-1',
        folders: [
          {
            itle: 'Папка-3',
            name: 'folder-3',
            files: [
              { title: 'Файл-10', name: 'file-10' },
              { title: 'Файл-11', name: 'file-11' },
              { title: 'Файл-12', name: 'file-12' }
            ]
          }
        ],
        files: [
          { title: 'Файл-4', name: 'file-4' },
          { title: 'Файл-5', name: 'file-5' },
          { title: 'Файл-6', name: 'file-6' }
        ]
      },
      {
        title: 'Папка-2',
        name: 'folder-2',
        files: [
          { title: 'Файл-7', name: 'file-7' },
          { title: 'Файл-8', name: 'file-8' },
          { title: 'Файл-9', name: 'file-9' }
        ]
      }
    ],
    files: [
      { title: 'Файл-1', name: 'file-1' },
      { title: 'Файл-2', name: 'file-2' },
      { title: 'Файл-3', name: 'file-3' }
    ]
  }
]


но мне кажется это не логичным, возможно нужно файлы как-то реально без категорий обозначить, к примеру сделать корневым не массив а объект изначально:
{
  folders: [
    {
      itle: 'Папка-1',
      name: 'folder-1',
      files: [
        { title: 'Файл-1', name: 'file-1' },
        { title: 'Файл-2', name: 'file-2' },
        { title: 'Файл-3', name: 'file-3' }
      ]
    }
  ],

  files: [
    { title: 'Файл-1', name: 'file-1' },
    { title: 'Файл-2', name: 'file-2' },
    { title: 'Файл-3', name: 'file-3' }
  ]
}


но такой подход тоже вызывает у меня сомнения, мне кажется. что я неправильно думаю, подскажите нужное направление пожалуйста.
  • Вопрос задан
  • 348 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Самый удобный способ это иметь плоскую структуру:
[
	{
		"id": "1"
		"type": "dir",
		"title": "Папка-1"
		"parent": "",
		"children": [
			"2",
			"3",
			"4"
		]
	},
	{
		"id": "2"
		"type": "file",
		"title": "Файл-1"
		"parent": "1",
	},
	{
		"id": "3"
		"type": "file",
		"title": "Файл-2"
		"parent": "1",
	},
	{
		"id": "4"
		"type": "file",
		"title": "Файл-3"
		"parent": "1",
	}
]

Это позволит позволит проще искать искать дочерние сущности (директории и файлы) для того чтобы их в дальнейшем удалить/изменить/отобразить.
И это довольно просто для понимания. Так как не будет никакой вложенности. Просто ссылаетесь по id. Ведь может быть папка в папке в папке в папке и т.д.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы