我有以下(人为的)代码:
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变量?
答案 0 :(得分:3)
您可以将匿名函数传递给Cachex.get
,而不是对命名函数的引用,该函数可以访问在函数外部声明的变量:
# dbconn holds the database connection
Cachex.get(:my_cache, "missing_key", fallback: fn _key ->
select_from_db(dbconn)
end)