Clojure, re-graph успешно извлек данные из graphql, но обратный вызов не активировался
Поэтому я использую версию re-graph 0.1.11 и пытаюсь получить данные из конечной точки. После извлечения данных я проверил вкладку сети в браузере и нашел ожидаемые данные, после чего они должны активировать мою функцию обратного вызова, но, похоже, она не работает (но иногда она работает, и после нескольких обновлений страницы это не работает). снова работать). Вот код.
;; how I init re-graph
(rf/dispatch [::re-graph/init
::conf/graphql-client-name
{:ws-url url
:http-url url
:ws-reconnect-timeout 500
:resume-subscriptions? true}])
(re-frame.core/reg-event-fx
::fetch-expected-data
(fn [cofx event]
(let [app-db (:db cofx)
some-params (-> event second (cljs.core/js->clj :keywordize-keys true))
token (-> app-db (lens/get-in (auth-db/lens-token :group-level-x)))]
(re-frame.core/dispatch
[:re-graph.core/query
::conf/graphql-client-name
"query findExpectedData($query: FetchExpectedDataInput!, $token: String!) {
findExpectedData(query: $query, token: $token){
value1
value2
...
}
}"
{:query some-params
:token token}
;; this is where the problem occurs
;; even though i found the data in the network tab, but
;; this callback doesn't seem to work (sometimes it works sometimes it doens't)
[::fetched-data-completed]]))))
(re-frame.core/reg-event-fx
::fetched-data-completed
(fn [cofx [_ {:keys [data errors] :as payload}]]
(let [app-db (:db cofx)
error-message (-> errors :errors first :message)]
(if (or (nil? errors) (empty? errors))
(do (bla bla when success))
(pr error-message)))))
Я застрял с этой проблемой в течение нескольких месяцев. может быть, потому что я получаю много данных одновременно? или может быть что-то еще кто знает?. Кстати, в самом коде я использую defmacro, но он работает так же, как код выше.
1 ответ
Так мне удалось найти ответ на свой вопрос. Похоже, что app-db не был инициализирован должным образом, поэтому я исправил эту проблему, и все работает нормально. надеюсь, что это поможет кому-то, кто борется с этой проблемой.