首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phoenix框架查询参数

Phoenix框架查询参数
EN

Stack Overflow用户
提问于 2015-12-27 04:02:44
回答 1查看 682关注 0票数 2

我正在尝试基于查询字符串中的参数构建查询。我刚刚开始学习Elixir/OTP和函数式编程,所以我正在尝试找到做这件事的函数式方法。目前,我正在减少传递到操作中的映射,并使用找到的参数构建查询。有没有更实用或更灵丹妙药的方法呢?

代码语言:javascript
复制
query = Enum.reduce params, Event, fn(param, query) ->
  case param do
    {"after", date} ->
      date = DateTimeParser.parse!(date, "{ISO:Extended:Z}")
      from e in query,
        where: e.time > ^date
    {"before", date} ->
      date = DateTimeParser.parse!(date, "{ISO:Extended:Z}")
      from e in query,
        where: e.time < ^date
    {"eventType", type} ->
      from e in query,
        where: e.event_type_id == ^type
    _ -> query
  end
end 
EN

回答 1

Stack Overflow用户

发布于 2015-12-27 06:23:34

我真正看到的唯一改进是使用函数而不是案例,这在你添加更多案例之前不会有多大影响。

代码语言:javascript
复制
query = Enum.reduce params, Event, build_query/2

def build_query({"after", date}, query) do
  date = DateTimeParser.parse!(date, "{ISO:Extended:Z}")
  from e in query,
    where: e.time > ^date
end

# etc ...

def build_query(_, query), do: query

如果我的语法有任何错误,请原谅,我现在不在家。希望你能领会到改变的精神。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34474778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档