Postgrex, как определить библиотеку JSON
Я просто пытаюсь использовать Postgrex без какой-либо настройки ecto, так что просто пример из документации readme.
Вот как выглядит мой модуль:
defmodule Receive do
def start(_type, _args) do
{:ok, pid} = Postgrex.start_link(
hostname: "localhost",
username: "john",
# password: "",
database: "property_actions",
extensions: [{Postgrex.Extensions.JSON}]
)
Postgrex.query!(
pid,
"INSERT INTO actions (search_terms) VALUES ($1)",
[
%{foo: 'bar'}
]
)
end
end
когда я запускаю код, я получаю
** (RuntimeError) type `json` can not be handled by the types module Postgrex.DefaultTypes, it must define a `:json` library in its options to support JSON types
Что-то я не правильно настраиваю? Из того, что я собрал в документации, мне даже не нужно иметь эту строку расширений, потому что json обрабатывается по умолчанию.
1 ответ
Решение
На Postgrex <= 0.13 вам нужно определить свои собственные типы:
Postgrex.Types.define(MyApp.PostgrexTypes, [], json: Poison)
а затем при запуске Postgrex:
Postgrex.start_link(types: MyApp.PostgrexTypes)
На Postgrex >= 0.14 (в настоящее время мастер) это было сделано проще:
config :postgrex, :json_library, Poison