Экто-запрос не работает на разрешении абсента

Я пытаюсь заставить работать простой запрос с Absinthe # Batch, но функция, где выполняется Ecto-запрос, не возвращает никакого результата.

Я добавил некоторую трассировку для подсчета записей на БД. Ожидается, что он всегда будет возвращать 1, но не возвращает.

Решатель:

def get_cards_for_stage(stage, _args, _ctx) do
  IO.puts "Before batch: #{OfferSid.Repo.aggregate(from(p in "pipeline_cards"), :count, :id)}"

  batch({__MODULE__, :pipeline_cards_by_stage_ids}, stage.id, fn batch_results ->

  IO.puts "Inside batch: #{OfferSid.Repo.aggregate(from(p in "pipeline_cards"), :count, :id)}"
    {:ok, Map.get(batch_results, stage.id)}
  end)
end

Метод Хелпер:

def pipeline_cards_by_stage_ids(_args, stages_ids) do
  IO.puts "On the helper method: #{OfferSid.Repo.aggregate(Ecto.Query.from(p in "pipeline_cards"), :count, :id)}"

  cards = OfferSid.pipeline_cards_by_stage_ids(stages_ids)
  Map.new(cards, fn s -> {s.pipeline_stage_id, s} end)
end

Некоторая трассировка:

  # Before batch: 1
  # Before batch: 1
  # Before batch: 1
  # On the helper method: 0
  # Inside batch: 1
  # Inside batch: 1
  # Inside batch: 1

1 ответ

Как упоминалось здесь в benwilson512, проблема заключалась в том, что соединение с БД не было общим.

Итак, я исправил это добавив:

before do
  Ecto.Adapters.SQL.Sandbox.mode(Repo, {:shared, self()})
end
Другие вопросы по тегам