Как мне представить и обновить порядок документов в базе данных? - PullRequest
0 голосов
/ 30 ноября 2018

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

Я хочу создать список файлов, которые пользователь может переупорядочивать вручную с помощью перетаскивания, чтобы файл можно было вставить в любую позицию между любыми двумяфайлы.Я пытаюсь найти способ хранения и обновления позиций всех файлов.

Изменение порядка массива или объекта json будет простым, но проблема в том, что каждый файл является отдельным объектом в базе данных.Я не могу просто добавить поле position к каждому файлу, потому что если пользователь уронит файл в середине списка, мне придется обновлять позиции всех файлов после этой точки.

Какими способами можно представлять и обновлять положение каждого файла, чтобы их можно было отсортировать в произвольном порядке?

1 Ответ

0 голосов
/ 30 ноября 2018

Два способа сделать это:

Опция 1 - Поле положения

Используя поле позиции вместо увеличения на 1, увеличьте на большее число, например 1000. Каждый раз, когда вы добавляете новыйпредмет, посмотрите на позицию на предмете до и после, найдите промежуточную точку между их позициями и используйте ее для нового предмета.например, вставка между позицией 1000 и 2000 будет 1500.

Это позволяет вам минимизировать количество обновлений всего, что происходит после этого элемента.

Назад в дниBASIC (с номерами строк) - это то, как мы избегали нумерации нашего кода всякий раз, когда нам приходилось возвращаться и вставлять код.Не самое симпатичное решение, но оно работает.

Вариант 2 - Связанный список

Сохранение ссылки на следующий элемент.Когда вы вставляете в середину, вам просто нужно обновить записи для предыдущего элемента.Вам также необходимо обновить предыдущий элемент в случае удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...