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 не был инициализирован должным образом, поэтому я исправил эту проблему, и все работает нормально. надеюсь, что это поможет кому-то, кто борется с этой проблемой.

Другие вопросы по тегам