在凤凰城获取更新db(在postgres中)通知

时间:2017-09-04 17:10:05

标签: postgresql elixir phoenix-framework

我现在需要在我的数据库中更改一行。我正在使用凤凰1.2.4。我已经使用了postgres触发器,但实际上我不知道是否需要它们。

你知道我怎么能解决我的问题?

注意:数据库不一定是从控制器更改的,而是我有一个更新某些部分的cron。

2 个答案:

答案 0 :(得分:2)

我几天前看过这个教程(Publish/subscribe with PostgreSQL and Phoenix Framework),看起来它包含了你想要的内容。

它设置来自数据库的通知,然后广播它。在您的情况下,您只需要通知部分,并且应该都很好。

我希望有帮助:)

答案 1 :(得分:2)

Postgrex.Notifications是将使用postgresql listen / notify将消息传递给elixir进程的模块。

一个简单的例子:

defmodule MyListener do
  use GenServer

  def start_link(), do: GenServer.start_link(__MODULE__, [])

  def init(_arg) do
    {:ok, pid} = Postgrex.Notifications.start_link(MyRepo.config())
    Postgrex.Notifications.listen(pid, "my_table")
    {:ok, []}
  end

  def handle_info({:notification, _connection_pid, _ref, _channel, payload}, state) do
    # ... do something with payload ...
    {:noreply, state}
  end
end