Сравните отметку времени узла с отметкой времени MySQL - PullRequest
0 голосов
/ 11 июля 2020

У меня есть столбец updated_at в моей таблице с меткой времени типа. Я собираюсь обновлять его с помощью узла ISOstring всякий раз, когда вызывается API, и возвращать ту же обновленную строку ISO во внешний интерфейс для дальнейших обновлений. Но когда API снова получает новое значение updated_at, я сравниваю полученную строку ISO с обновленным значением с полученным значением updated_at, выполняя запрос Select перед обновлением. Когда я сравниваю значения updated_at, они не совпадают. Например:

  1. Обновить updated_at с помощью узла ISO строка 2020-07-11T17:21:42.354Z и отправить его клиенту.
  2. Для второго обновления клиентское значение будет 2020-07-11T17:21:42.354Z, но значение, которое я получаю при извлечении из базы данных, составляет 2020-07-11T15:36:48.000Z. Ясно, что оба они не одинаковы.

Часовой пояс MySql установлен как UT C.

Код выглядит следующим образом:

async save(giData: any) {
    try {
      await this.validateAccess(giData);
      let validatedData = await this.validate(giData);
      let profileData: any = await this.profileRepo.save(validatedData);
      return profileData;
    } catch (error) {
      throw error;
    }
  }

async validate(item) {
   let previousItem = await this.profileRepo.findOne(item.id);

      if (
        item.updatedAt &&
        previousItem.updatedAt.toISOString() !=
        new Date(item.updatedAt).toISOString()
      )
        throw 'Record already updated';
      item.updatedAt = new Date().toISOString();
      return item;
    } catch (error) {
      throw error
    }
  }

...