Подписки Hasura — 1 пользователь получает уведомления от всех остальных
Я использую локальный сервер Hasura 2.32 через контейнер Docker. Бэкэнд — MSSQL 2019.
Предыстория:
у нас есть подписка Hasura на таблицу уведомлений в MSSQL. В таблице уведомлений есть столбец user_id, который применяется к клиенту, вошедшему в наше интерфейсное приложение (Vue2/Node). Любые изменения в таблице будут передаваться клиенту с требуемым идентификатором пользователя.
Это работает, когда в систему вошел один пользователь. И пользователь может видеть, как изменения таблицы передаются ему.
Проблема:
Предположим, что в систему вошли три пользователя. Существуют изменения в таблице, относящиеся к трем отдельным пользователям, посредством одной транзакции. Все три пользователя должны получить уведомление. Однако мы заметили, что уведомления отправляются только одному человеку. И он содержит данные, относящиеся ко всем трем из них. Мы считаем, что это проблема с конфигурацией Hasura.
Было бы очень признательно, если бы у кого-нибудь есть какие-либо советы о том, как устранить эту неполадку? Или есть ли какие-либо другие предложения о том, как мы можем решить эту проблему.
Для контекста вот запрос GraphQL, который мы используем:
подписка getNotification($for_user: String) {v_coverage_notification(where: { for_user: { _eq: $for_user } }, order_by: { созданный_dt: desc }) {read_dt Coverage_notification_id Coverage_id Coverage_edit_history_id Notification_Type_cdfor_user Create_dt Created_by_nm Create_by } }
Честно говоря, мы не знаем, как поступить в этом вопросе. Любая помощь будет принята с благодарностью!
1 ответ
Некоторые предложения:
Проверьте данные в таблице уведомлений: убедитесь, что поле for_user в таблице содержит правильные идентификаторы пользователей для каждого уведомления. Еще раз проверьте, правильно ли вставлены данные в таблицу.
Можете ли вы проверить, что ваши подписки работают в консоли Hasura с помощью того же запроса?
Проверьте полезные данные подписки. При срабатывании уведомления проверьте полезные данные, полученные клиентами. Убедитесь, что поле for_user в полезных данных соответствует идентификатору пользователя, для которого предназначено уведомление. Возможно, проблема заключается в том, как полезная нагрузка создается или доставляется клиентам.
Тестирование с различными пользовательскими сценариями. Попробуйте протестировать подписку с различными пользовательскими сценариями, например, когда в систему вошел только один пользователь, вошли два пользователя и все три пользователя вошли в систему одновременно. Это может помочь определить, является ли проблема специфичной для определенных пользовательских сценариев.
Проверьте наличие какой-либо пользовательской логики или промежуточного программного обеспечения. Если у вас есть какая-либо пользовательская логика или промежуточное программное обеспечение в клиенте вашего приложения, которое взаимодействует с подпиской Hasura, просмотрите ее, чтобы убедиться, что она не вызывает какого-либо непреднамеренного поведения или фильтрации уведомлений.
Надеюсь, ошибка где-то в одной из этих вещей. Пожалуйста, дайте мне знать, если он отсортирован.