如何从Elixir

时间:2017-10-04 16:29:46

标签: elixir phoenix-framework

我有以下(人为的)代码:

dbconn # this var holds the database connection
get_from_cache("missing_key")

defp get_from_cache(key) do
  Cachex.get(:my_cache, key, fallback: &from_db/1)
end

defp from_db(key) do
  select_from_db(dbconn)
end

CacheX包说我可以添加一个回退函数,如果在缓存中找不到密钥,将会调用该函数。但是这个功能需要的不仅仅是关键。我知道我必须在这里遗漏一些东西,但是如何从Elixir中的回调中访问dbconn变量?

1 个答案:

答案 0 :(得分:3)

您可以将匿名函数传递给Cachex.get,而不是对命名函数的引用,该函数可以访问在函数外部声明的变量:

# dbconn holds the database connection
Cachex.get(:my_cache, "missing_key", fallback: fn _key ->
  select_from_db(dbconn)
end)