Схема базы данных для приложения Gym Exercise Log

Нам просто пришлось обойти эту проблему и протестировать три разных подхода.

  1. отменяет запрос, предложенный @meouw
  2. , выполняет весь запрос, но только обрабатывает результат последнего submit
  3. предотвращает новые запросы до тех пор, пока другой еще не ожидает

var Ajax1 = {
  call: function() {
    if (typeof this.xhr !== 'undefined')
      this.xhr.abort();
    this.xhr = $.ajax({
      url: 'your/long/running/request/path',
      type: 'GET',
      success: function(data) {
        //process response
      }
    });
  }
};
var Ajax2 = {
  counter: 0,
  call: function() {
    var self = this,
      seq = ++this.counter;
    $.ajax({
      url: 'your/long/running/request/path',
      type: 'GET',
      success: function(data) {
        if (seq === self.counter) {
          //process response
        }
      }
    });
  }
};
var Ajax3 = {
  active: false,
  call: function() {
    if (this.active === false) {
      this.active = true;
      var self = this;
      $.ajax({
        url: 'your/long/running/request/path',
        type: 'GET',
        success: function(data) {
          //process response
        },
        complete: function() {
          self.active = false;
        }
      });
    }
  }
};
$(function() {
  $('#button').click(function(e) {
    Ajax3.call();
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="button" type="button" value="click" />

В нашем случае мы решили использовать подход №3, поскольку он создает меньшую нагрузку для сервера. Но я не уверен на 100%, если jQuery гарантирует вызов метода .complete (), это может вызвать тупиковую ситуацию. В наших тестах мы не смогли воспроизвести такую ​​ситуацию.

1
задан SQLol 16 January 2019 в 16:12
поделиться

1 ответ

Оптимально ли хранить все отдельные данные журнала набора в одной таблице (записи журнала)?

По всей вероятности, да, исключение будет, если количество строк вырос, чтобы негативно повлиять на время отклика.

Должны ли таблицы «Тип упражнения» и «Оборудование» быть отдельными или просто столбцами в «Таблице упражнений»? То же самое относится и к типу тренировки

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

Будет ли это хорошим подходом с точки зрения производительности / удобства использования?

За исключением таблицы Log (в том виде, в каком она есть, включая получение даты), тогда она выглядит как хороший и эффективный подход. Таблица «Журнал» не нужна, поскольку в таблице «Записи журнала» есть столбец для даты и времени (поэтому в ответ на комментарий «да» было бы лучше использовать дату / время в записях журнала и покончить с журналом таблицу).

0
ответ дан MikeT 16 January 2019 в 16:12
поделиться
Другие вопросы по тегам:

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