У меня есть столбец updated_at
в моей таблице с меткой времени типа. Я собираюсь обновлять его с помощью узла ISOstring всякий раз, когда вызывается API, и возвращать ту же обновленную строку ISO во внешний интерфейс для дальнейших обновлений. Но когда API снова получает новое значение updated_at
, я сравниваю полученную строку ISO с обновленным значением с полученным значением updated_at
, выполняя запрос Select перед обновлением. Когда я сравниваю значения updated_at
, они не совпадают. Например:
- Обновить
updated_at
с помощью узла ISO
строка 2020-07-11T17:21:42.354Z
и отправить его клиенту. - Для второго обновления клиентское значение будет
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
}
}