标签: elixir

如何更改Elixir地图中的所有值

我看到updateDict模块中有一个,但是一个update_all改变所有值的方法呢?

我尝试这样做,Enum.map但类型改变了:

iex(6)> Enum.map(%{:a => 2}, fn {k, v} -> {k, v + 1} end)
[a: 3]
Run Code Online (Sandbox Code Playgroud)

functional-programming elixir

14
推荐指数
2
解决办法
3382
查看次数

在凤凰城处理嵌套表格/外部变更集的正确方法是什么?

我正在凤凰城编写一个简单的CRUD应用程序,管理员在创建新组织时可以使用初始员工帐户进行配置.

有效地,组织和用户之间的关系是多对多的.

我想出了以下内容:

  1. 用户架构:

    defmodule MyApp.User do
    use MyApp.Web, :model
    
    schema "users" do
      field :name, :string
      field :email, :string
      field :password, :string, virtual: true
      field :password_hash, :string
    end
    
    def changeset(...) # validate email, password confirmation etc.
    
    Run Code Online (Sandbox Code Playgroud)
  2. 组织架构:

    defmodule MyApp.Org do
      use MyApp.Web, :model
    
      schema "orgs" do
        field :official_name, :string
        field :common_name, :string
    
        has_many :org_staff_users, MyApp.OrgStaffUser
        has_many :users, through: [:org_staff_users, :user]
     end
    
     def changeset(model, params \\ :empty) do
      model
      |> cast(params, ~w(official_name common_name), [])
     end
    
     def provisioning_changeset(model, params \\ :empty) do …
    Run Code Online (Sandbox Code Playgroud)

elixir ecto phoenix-framework

14
推荐指数
1
解决办法
3409
查看次数

使用Elixir在地图列表中获取特定键值?

作为Elixir的新手,我在理解模式匹配方面遇到了一些问题.

如果我有这样的Elixir数据结构:

list_with_maps = [%{"id" => 1, "name" => "a"}, %{"id" => 2, "name" => "b"}]
Run Code Online (Sandbox Code Playgroud)

从中获取所有id字段的值的最佳方法是什么?

elixir

14
推荐指数
2
解决办法
1万
查看次数

如何使用Ecto使用Postgres的枚举类型

使用PostgreSQL,我们可以这样做:

CREATE TYPE order_status AS ENUM ('placed','shipping','delivered')
Run Code Online (Sandbox Code Playgroud)

Ecto的官方文档来看,没有本地类型可以映射Postgres的枚举类型.此模块为枚举结构提供自定义类型,但它映射到数据库中的整数.我可以轻松地使用该库,但我更喜欢使用数据库附带的本机枚举类型.

Ecto还提供了一种创建自定义类型的方法,但据我所知,自定义类型必须映射到本机Ecto类型...

任何人都知道这是否可以在Ecto的架构中完成?如果是,迁移将如何运作?

postgresql enums elixir ecto

14
推荐指数
6
解决办法
4991
查看次数

Elixir/Phoenix:如何在配置文件中使用第三方模块?

似乎在凤凰中配置文件的加载和编译方式在使用config.exs或中使用第三方模块时会出现问题dev.exs/prod.exs/test.exs.

示例:要设置Guardian进行JWT身份验证,我正在尝试使用该JOSE.JWK模块在我的JWK创建/加载config.exs.我可以在控制台中使用该模块iex -S mix phoenix.server.它当然是作为依赖项安装的.我得到的错误是

** (Mix.Config.LoadError) could not load config config/config.exs
    ** (UndefinedFunctionError) undefined function JOSE.JWK.from_file/2 (module JOSE.JWK is not available)
Run Code Online (Sandbox Code Playgroud)

这是我的config.exs中的代码

# Configure Guardian for JWT Authentication
config :guardian, Guardian,
  allowed_algos: ["HS512"], # optional
  verify_module: Guardian.JWT,  # optional
  issuer: "MyApp",
  ttl: { 30, :days },
  verify_issuer: true, # optional
  secret_key: System.get_env("GUARDIAN_KEY_PASSPHRASE") |> JOSE.JWK.from_file(System.get_env("GUARDIAN_KEY_FILE")),
  serializer: MyApp.GuardianSerializer
Run Code Online (Sandbox Code Playgroud)

当我将调用包装JOSE.JWK.from_file/2在匿名函数中时,它可以工作.但是当然Guardian.config(:secret_key)的值是匿名函数本身而不是它的返回值:

# Configure Guardian for JWT Authentication
config :guardian, …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

14
推荐指数
1
解决办法
1781
查看次数

Ecto/Elixir,我如何按日期查询?

我正在处理我的应用程序的统计页面,并尝试按日期查询数据.

为了获得日期范围,我使用 Calendar.Date

date_range = Date.days_after_until(start_date, end_date, true)
|> Enum.to_list
Run Code Online (Sandbox Code Playgroud)

它返回日期的日期列表,每个日期看起来像"2017-04-07".因此,根据我的日期date_range,我尝试查询,但它会触发如下错误.

where cannot be cast to type Ecto.DateTime in query: from o in Myapp.Order, where: o.created_date >= ^~D[2017-04-07]

对于created_date秩序领域,我做了这样的领域, field :created_date, Ecto.DateTime.

如果我想按日期查询,我该如何查询?

预先感谢.

datetime elixir ecto

14
推荐指数
1
解决办法
5557
查看次数

插入具有has_many关联的模型

我有以下型号:

# Foo model
schema "foo" do
  field :name, :string
  has_many: :bars, App.Bar
end

# App model
schema "bar" do
  field :name, :string
  belongs_to: foo, App.Foo
end
Run Code Online (Sandbox Code Playgroud)

这个形式:

# form.html (Foo)
<%= form_for @changeset, @action, fn f -> %>
  <%= text_input f, :name, class: "form-control" %>
  <%= submit "Submit", class: "btn btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这里面的形式,我如何添加文本字段来填充我的新FooBars

以下不起作用,因为bars没有预加载:

<%= text_input f, :bars, class: "form-control" %>
Run Code Online (Sandbox Code Playgroud)

我是在正确的轨道上吗?如果是这样,我怎么能Bars在表格中预加载?

更新,控制器:

def new(conn, _params) do
  changeset …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

13
推荐指数
1
解决办法
4104
查看次数

如何在Phoenix Framework中呈现原始HTML代码?

我在我的RethinkDB数据库中存储来自contenteditable标记的原始html.现在我想在检索后显示内容.

html.eex

<div id="contentEditableText">
    <%= for %{"contentText" => contentText} <- @contentText.data do %>
      <div><%= "#{contentText}" %></div>
    <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以成功检索它,但它显示原始的html本身.

html elixir phoenix-framework

13
推荐指数
1
解决办法
5919
查看次数

如何在凤凰框架中提供静态页面?

我想在Phoenix Framework中提供静态页面以在Angular Views中使用它.我知道我可以提供常规HTML,但我想摆脱默认值LayoutView.我可以用一个解决方案来获得一些不"继承"的凤凰视图LayoutView.可能吗?

elixir phoenix-framework

13
推荐指数
1
解决办法
5264
查看次数

在Elixir/Erlang中处理可填写的PDF

我一直在尝试在Elixir或Erlang中找到示例功能,以获取可填写的PDF,然后使用来自应用程序的输入数据填充它.

到目前为止,我无法在Elixir或Erlang中找到任何解决方案.

有没有人知道我们可以用来实现这个目标的好方法或模块?

提前致谢!

pdf erlang elixir pdf-manipulation phoenix-framework

13
推荐指数
1
解决办法
470
查看次数