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

Не могли бы вы помочь мне с этой проблемой?

У меня есть простое веб-приложение для создания телефонных зазоров, использующее магистраль. js и localstorage. Я столкнулся с проблемой при попытке добавить новую функцию в мое приложение. Мое приложение в настоящее время имеет небольшую базу данных из 13 элементов, каждый из которых имеет различные атрибуты. Эти атрибуты модифицируются пользовательским вводом и хранятся в локальном хранилище, что позволяет им сохраняться между открытием и закрытием приложения.

Я хочу добавить функцию, которая позволит пользователю добавлять пользовательские элементы, например, элементы 14, 15 , 16. Однако, когда я думаю о сохранении этих элементов в локальном хранилище, они будут сохранены как id = 14, id = 15, id = 16. Что происходит тогда, если пользователь удаляет элемент 14, а затем хочет добавить элемент 17. Приложение проверит количество элементов (всего 15 (элементы 1-13, плюс элементы 15 и 16)), а затем попытается сохранить элемент 17 как пункт 16. Пункт 16 уже будет существовать в базе данных!

Я уверен, что я неправильно использовал localalstorage, и я должен был использовать другое решение для хранения с самого начала.

Есть ли способ кодирования решения для этого и сохранения моего существующего решения localalstorage, или мне нужно будет перейти на другое решение для хранения, такое как indexeddb или web sql. Я разработчик-любитель, поэтому, если бы вы могли объяснить мне это как можно лучше, я был бы очень признателен.

Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

Может быть, это поможет. Проблема конкретно в предложении «Приложение проверит количество элементов (всего 15 (элементы 1-13, плюс элементы 15 и 16)), а затем попытается сохранить элемент 17 как элемент 16.» У вас есть две цели в игре. Одним из них является подсчет количества предметов. Второе - решить, каким должен быть идентификатор нового элемента. Прямо сейчас вы заявляете, что устанавливаете идентификатор нового элемента на основе количества существующих элементов плюс один.

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

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

Сохраняет текущее значение этого непрерывно увеличивающегося числа в локальном хранилище.

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

Тогда единственное, о чем вам когда-либо придется беспокоиться, это о том, является ли он в течение жизни вашей программы на самом деле создаст 2 миллиарда элементов, и число будет настолько велико, насколько это возможно, до такой степени, что вы не сможете больше добавить 1 к нему. Вероятно, вряд ли.

...