У меня есть компонент React, который является частью приложения React / Apollo Booking. Я храню все заказы в базе данных SQL, которая подключена к React-Apollo между ними. Перед тем, как клиент начнет процесс оплаты, в базу данных отправляются временные бронирования, чтобы «удерживать» определенное время и удерживать других клиентов от бронирования в то же время. И если клиент обновляет / покидает страницу, я хочу удалить эти временные заказы из БД Apollo.
Рабочий процесс выглядит следующим образом:
- Выберите время для бронирования (и здесь я добавляю бронирование в БД).
- Список заказов клиентов для просмотра и добавления дополнительных функций.
- Процесс оплаты
Итак, у меня проблема в том, что если клиент уходит с шага 2, я хочу удалить это бронирование из БД. Может ли это быть сделано с помощью приведенного ниже кода или мне нужно поставить как таймер на эти временные заказы и удалить через некоторое время из БД, если определенные критерии не выполнены?
Я прочитал несколько тем на эту тему и попробовал предложенные решения. Я предполагаю, что вызов БД является асинхронным, или проблема заключается в том, что реквизиты задействованы, и поэтому он не работает.
componentDidMount() {
window.addEventListener('beforeunload', function () {
this.props.tempBookings.forEach(booking => {
removeBookingFromDB(booking.id)
})
}, false);
}
componentWillUnmount() {
window.addEventListener('beforeunload', function () {
this.props.tempBookings.forEach(booking => {
removeBookingFromDB(booking.id)
})
}, false)
}