Elixir 如何模式匹配Ecto查询错误

与elixir中的其他函数(以及Ecto自己的事务)一样,我希望使用模式匹配来处理Ecto查询中的潜在错误。像这样: case Repo.get!(User, id) do {:ok, user} -> #do something {:error, message} -> #pass the error end 显然,这不起作用,但是我如何模式匹配像exto.NotSingleResult这样的exto错误和像preload错误这样的其他潜在查询问题呢?嘿,

如何在Elixir中生成数字序列?

通过一些长生不老药练习,我发现需要快速生成1到n个整数的序列。在Ruby中,我会这样做: numbers = (1..100) 长生不老药有相似之处吗?长生不老药有一个非常相似的特点: iex(2)> numbers = 1..10 1..10 iex(3)> Enum.to_list(numbers) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] iex(4)> Enum.map(numbers, fn x -> x * x end) [1, 4,

Elixir脚本或iex是否可以在不创建新项目的情况下使用外部模块?

我经常使用Elixir编写HTTP程序。 当然,如果我使用mix创建新项目并修改mix.exs作为HTTPoison的依赖项,mix deps.get可以解析依赖项 然而,有时我想尝试使用简短的脚本(.exs)或iex来进行简单的实验,这些实验需要外部模块,而无需创建新项目 是否有任何方法可以解决此需求,如Elixir中的“库搜索路径”?code模块具有实现所有需要的功能。但是,它只适用于机器上的现有文件,您几乎需要“手动”执行所有操作 你应该完成大部分你想要的 另一种方法是在现有项目中使用ie

Elixir 使用EXTO存储自定义信息

我正在重新实现我最初在凤凰城的Rails中编写的一个应用程序,其中用户可以使用PostgreSQL的JSONB记录类型创建自定义字段。例如,我们有以下(简化表示)模式: 客户 ID(int) 客户端类型ID(int) 名称(字符串) 信息(jsonb) 客户端类型 ID(int) 名称(字符串) 自定义字段定义 ID(int) 客户端类型ID(int) 键(字符串) 标签(字符串) 在Rails中,ActiveRecord神奇地将JSONB转换为散列和散列,这使我可以使用JSONB非

Elixir 如何在Phoenix框架模板中渲染弧形外星图像?

我在模板中编写了以下代码 “alt=”“/> 如下所示 然后,我在地址栏中键入路径localhost:4000/uploads/large_116.jpg.jpg?v=63615301283,得到下面的错误 GET/uploads/large_116.jpg.jpg(edgec.Router)找不到路由 也许,因为上传的图像不是模型,也不是路由控制器 我可以路由上传的图像和渲染吗?自行解决 我发现以下问题 或者,更详细地说,您希望提供服务。我实际上发现修改现有的插件是唯一有效的方法,因此,如果

在Phoenix框架(Elixir)中实现图像库

我正在尝试使用arc实现一个图像库。 我面临以下问题 无法一次上载多个文件(到AWS S3) 可以上传小于mb的文件,如果我尝试大文件会出现超时错误(想知道如何上传大文件) 显示来自AWS S3的图像 上载超过MB的文件时出现的错误是 [error] Task #PID<0.536.0> started from #PID<0.533.0> terminating ** (stop) {:aws_error, {:socket_error, :timeout}}

规范化Elixir/Phoenix中的字符串

我想规范化用户通过发布的Unicode(UTF-8)字符串。有没有图书馆可以用长生不老药(或凤凰城或二郎城)来处理这些东西?我习惯于在Python中这样做,但我不知道Elixir有这些库 import unicodedata import zenhan import jctconv def normalize(strings, unistr = 'NFKC') norm = unicodedata.normalize(unistr, strings) zenhan = zenh

Elixir 如何设置默认参数和可选参数?

我有这个功能 def start(data, opts \\ [pages: 17, depth: 3]) do maxPages = opts[:pages] maxDepth = opts[:depth] IO.puts maxPages IO.puts maxDepth end 当我执行程序时,启动(“数据”,第8页)然后我希望它打印8和3,但它只打印8,您可以改为: def start(data, opts

Elixir-Exto:如何创建自引用外键?

在EXTO迁移中,实现引用自己表的外键的正确方法是什么 e、 g.我想创建一个表,其中任何行都可以引用同一表中的“父”行。(实现分层数据的一种方法;还有许多其他方法。) 但是当我的变更集中有这个时,我在运行mix-exto.migrate时会出现很多错误: create_if_not_exists table(:perms, prefix: :accts) do add :title, :string, size: 64, null: false add :description, :t

Elixir 使用Phoenix框架而不使用Exto

我正在开发一个有Phoenix支持的web界面的应用程序,我正在探索当前SQLite(及其EXTO驱动程序)的替代存储方法(是的,我听说过PGSQL,不,我不愿意使用它) 我想使用LevelDB和H2LevelDB,它在上有一个可用的Erlang驱动程序 然而,在编译时,我意识到Phoenix似乎非常依赖于Ecto,甚至在负责呈现eex模板的模块中也是如此。我觉得这有点可怕,有点奇怪,同时也有点烦人。 因此,从预生成的文件中盲目清除对EXTO的所有引用是安全的,还是应该为我的web UI切换到其

Elixir 如何从内部进程订阅通道?(正在尝试保持持久连接)

我有一个聊天室,当一个用户有一个连接的插座,我们广播到那个。但是当用户未连接时,我想记录用户错过的信息(消息等) 我最初的想法是有一个GenServer,它接受并存储数据,直到用户重新联机 如何让内部进程订阅频道 类似于这样的App.RoomChannel.join(“rooms:1”,u,self())(这不起作用,因为最后一个参数需要是一个套接字)如果您想跟踪一些有关用户信息的元数据,如(设备或用户联机时间,一些消息通知…),您可以使用Phoenix.Presence来跟踪这些信息 如果要

Elixir 使用长生不老药';带多体匿名函数的s速记符号

给定Elixir函数add1=fn a->a+1 end,我知道可以用速记法将其表示为add1=&(&1+1) 有没有一种方法可以在多体函数中使用速记符号?例如,下面的函数返回两个数字中较大的一个 max = fn a, b when a > b -> a _a, b -> b end 有没有可能用Elixir的速记法来表达这个匿名函数?这个例子很有效 max = fn (a, b) when a >= b -> a (_a, b) -&g

Elixir 在';提交';Phoenix HTML表单中的按钮

我想在用户点击HTML表单上的“提交”时向请求添加一些查询字符串参数。当前模板文件代码: <body> <h2>Create a new email subscription</h2> <p>This email address will recieve a message when a new order is placed.</p> <%= form_for @changeset, subscription_p

Elixir:在测试中重新定义模块

我有一个ExUnit测试,可以ping一个端点。该端点调用一个函数,该函数通过由环境确定的http客户端进行外部调用 在测试环境中,我使用了HTTPoison的模拟模块 defmodule HTTPoisonMock do def get(_url), do: raise "You need to define this function for your test" end 在测试本身中,我试图重新定义这个模块,以便函数返回一个固定的响应 test "/my_endpoint" do

Elixir Phoenix框架中的截断文本

我有一个名为content的文本字段,我需要显示它的摘录 最好的方法是什么 比如: <% post.content.slice(0..50) %> 这就是我的想法;然而,这给了我一个参数错误 显示内容文本字段前50个字符的最佳方式是什么 或者,我可以在创建/保存数据到数据库时创建摘录字段吗 感谢您的帮助。提前谢谢 defmodule MyApp.StringFormatter do def truncate(text, opts \\ []) do max_len

Elixir 获取所有地图密钥

elixir中有没有一种方法可以获得与PHP中的array\u key类似的所有映射键?我一直在寻找,但似乎找不到办法 还是有其他方法可以获得唯一值?我正在为地图中值为1的键指定名称,以仅获取不同的值。然后我想得到只检索唯一值的键 我正在使用以下代码创建地图: names = Enum.reduce lines, %{}, fn line, acc -> Map.put(acc, line.name, 1) end 例如,我有两行line.name作为测试。我希望最终结果返回刚才的测

在Elixir中打印变量名

警告:这是一种聪明的尝试。我知道我可能应该让它可读,但这并不意味着我不想知道如何变得聪明 我有这样的例子(人为的例子): def胶水(%%{“alpha”=>alpha,“beta”=>beta})可以 康多 α和β-> α-β 阿尔法-> IO.puts(“哎呀,你忘了给我alpha!”) 正确-> IO.puts(“哎呀,你忘了给我测试版了!”) 结束 结束 但我想改为: def glue(%{"alpha" => alpha, "beta" => beta}) do co

Elixir 使用EXTO.Schema.has\时参数错误

尝试在用户和任务之间设置1对n关系时,编译器抛出一个参数错误: == Compilation error on file lib/platform/mandate.ex == ** (ArgumentError) argument error (ecto) lib/ecto/association.ex:474: Ecto.Association.Has.get_ref/3 (ecto) lib/ecto/association.ex:424: Ecto.Association.

带下划线前缀参数名称的Elixir函数-这是如何工作的?

我目前正在尝试将ueberauth和guardian身份验证框架集成到我的应用程序中。我正在看一些例子,特别是github中的这个例子: 有一部分,呈现的网页使用4个参数调用身份验证控制器,但页面使用2个参数调用函数 在auth_controller.ex中,https://github.com/hassox/phoenix_guardian/blob/ueberauth-guardian/web/controllers/auth_controller.ex。 login函数有4个参数,其中2个

Elixir 合并地图更新值列表

我正在尝试合并一个词典列表。列表中的每个字典都是嵌套的,我需要对列表中每个元素的值求和。比如, samples = [ %{team1: %{a: 5, f: 0, n_games: 1}, team2: %{a: 0, f: 2, n_games: 1}}, %{team1: %{a: 1, f: 2, n_games: 1}, team2: %{a: 4, f: 3, n_games: 1}} ] 他需要回来 %{team1: %{a: 6, f: 2, n_games: 2},

Elixir Articles.video_post/0在添加新的view Phoenix 1.3应用程序时未定义

我正在尝试向网站添加一个页面,该页面仅在我的articles\u posts表中名为postType的字段中显示包含video的帖子,但我收到一个错误,说函数未定义 在我的文章上下文中articles.ex def video_post do Post |> where(postType: "video")|> Repo.all() end 视频控制器 defmodule Driverless.Web.VideoController do use Driverl

如何在Elixir中为流中的每个块编写文件

我有一个问题,我需要读取一个非常大的文件,然后打印每个块的解析结果。最后没有一个完整的列表 到目前为止,我可以在地图集中获得uniq结果,但无法确定如何按照chunk\u大小写入文件 使用此方法获取唯一的文件名 def new_file_name do hex = :crypto.hash(:md5, Integer.to_string(:os.system_time(:millisecond))) |> Base.encode16 end 到目前为止,我得到的最好的结果是

Elixir 在同一端口上具有子域的Phoenix伞形应用程序

我正在尝试创建一个凤凰伞项目,在同一端口上使用多个应用程序。使用当前配置,我收到以下错误: ⧕ /m/i/d/p/e/portfolio on master * ⟩mix phoenix.server 13m 20s 412ms ==>

Elixir 从模型中获取表名

我有一个这样的模型 Qber.V1.CustomerModel 这将存储在变量queryable中的我的代码中 defp build_select(queryable, opts_select \\ []) do case opts_select do nil -> queryable IO.inspect opts_select select when is_list(select) -> IO.inspect select

Elixir 在外迁移中使用Repo

我有一个外迁移,我想修改一些列,但也迁移一些数据。例如: 导入外部查询 defmodule MyApp.Repo.Migrations.AddStatus do 改变表格(:foo)do 添加(:状态,:文本) 结束 foos=from(MyApp.Foo中的f,其中:…) |>MyApp.Repo.all 枚举每个(foos,fn(foo)-> #这里有一些复杂的逻辑在起作用 #了解如何根据'foo'的其他属性设置状态` (完) 结束 现在,这里的问题是,通过调用MyApp.Repo.all

Elixir 长生不老药:高级“第二次”手术-最佳实践?

我有一个复杂的cond用例,我很好奇这是否是最好的方法 下面的代码基本上尝试将客户与现有记录进行匹配 一旦查询排列返回任何行,我需要代码停止检查 customers = cond do (c = CustomerRepo.findExactNameAndDob(store_id, firstname, lastname, dob)) |> length > 0 -> c (c = CustomerRepo.findExactNameAndMobile(store_id,

Elixir跳过运算符而不是另一条消息?

我想知道如何在3000毫秒后跳到这个函数的末尾,但屏幕上没有任何其他打印消息,也没有调用其他函数或发送更多消息 defmodule ExampleModule do def main do Process.send_after(self(), :hello, 2_000) send self(), :hello_again next() end def next do receive do

对于返回随机值的函数,Elixir doctest失败

我在Elixir中有一个函数,它在一个列表中生成三个随机RGB元组 defmodule Color do @doc """ Create three random r,g,b colors as a list of three tuples ## Examples iex> colors = Color.pick_color() iex> colors [{207, 127, 117}, {219, 121, 237}, {1

Elixir 管道操作符不是';行不通

这很有效: a1 = Repo.get_by(MyModel, var1: var1) a2 = Repo.preload(a1, [:aaa, bbb: :ccc]).items 但这引发了一个例外: Repo.get_by(MyModel, var1: var1) |> Repo.preload([:aaa, bbb: :ccc]).items # or this # a2 = Repo.get_by(MyModel, var1: var1) |> Repo.pr

Elixir phoenix/控制器中的测试日期

进行以下基本测试(使用ex_machina): 我在日期上遇到错误: left: ... "published_at" => "2010-04-17T14:00:00.000000" right: ... "published_at" => ~N[2010-04-17 14:00:00.000000] 使用“published_at”=>“{item.published_at}”尝试了一个简单的字符串断言 但在以下方面仍然失败: left: ..."published_at" =&

Elixir 使用模块作为常量

我正在编写一个自定义的EXTO类型,其行为类似于枚举类型。我有一个原子=>整数的关键字列表 我意识到我可以使用长生不老药模块(其实只是原子)作为我的钥匙,而不是普通的原子。我不确定这是否是糟糕的状态 对我来说,使用模块1)看起来更重要、更明显,因为可接受的值在范围内是有限的,2)提供了一些正确代码建议的机会 因为它们“只是原子”,我不相信这样做会比我不这样做会带来更多的性能损失?同时,通过规则原子对长生不老药来说似乎更自然一些 我不太担心数据库中插入了错误的atom,因为我在cast/dump中

在elixir中实现行为的所有模块列表

获取实现行为的所有模块列表的最短方法是什么 e、 g 我想以[a,B]的形式获得一个列表。我尝试加载所有模块,然后使用键属性behavior进行过滤,但我认为速度会非常慢。还有其他更好的办法吗?没有,没有更好的办法了。行为不会以任何方式编入索引,因为它们是一种编译时功能,用于检查是否已定义了所有必需的回调函数。所以像这样的东西是最好的: for {module, _} <- :code.all_loaded(), X in (module.module_info(:attribut

在我的elixir/phoenix项目中,如何在aws cloudfront中创建失效

我在elixir/phoenix项目中使用ex_aws依赖项在我的aws帐户中执行一些操作。现在我需要运行类似这样的操作来使缓存无效: aws cloudfront create-invalidation --distribution-id 1111111111 --paths '/*' 但是ex_aws依赖项没有cloudfront服务。有什么解决办法吗 Versions: {:phoenix, "~> 1.4.0"} ... {:ex_aws, "

Elixir 反转并在列表上单击

将列表的反转版本连接到原始列表的最惯用方法是什么?因此: Input:[1,2,3],这是my_func()的输出 输出:[1,2,3,3,2,1] 我们可以用一种不太习惯的方式来实现这一点,比如: n=my_func()#返回例如[1,2,3] n_reversed=Enum.reverse(n) n_combined=Enum.concat(n,n_反向) 我在想这样的事情(行不通): my_func()|>Enum.concat(Enum.reverse(&&1))) 此解决方案确实

Elixir Kernel.make_ref做什么?这个引用类型是什么?

我运行了函数内核。make_ref/0,它返回一个不透明类型的值,如下所示:#Reference 这是什么?它的用途是什么?引用几乎是唯一的值,可以比较它们的相等性和模式匹配性。所以它在ErlangVM中有点像uuid。让我们参考以下内容: 引用是具有两个属性的erlang对象: 它们可以由程序创建(使用make_ref/0),并且 他们可以平等地进行比较 我不会把它标记为复制品。这个问题是关于Kernel.make_ref的,它是长生不老药特有的,而且措辞也比标记的问题好。@Aleksei

Elixir 将列表转换为以前两个字母作为索引的映射

我有以下清单: [“AM00”、“CC11”、“CB11”] 我需要在地图中转换此列表,如下所示: %{“AM”=>“00”、“CC”=>“11”、“CB”=>“11”} 我尝试使用Enum.map,但无效: [“AM00”、“CC11”、“CB11”] |>Map.new(&Enum.Map(&1,fn x->x end),%{}) 二进制模式匹配可以解析字符串: data = ["AM00", "CC11", "CB11"] for <<key::binary-

Elixir NimbleCSV/CSV-字符串中的换行符会导致CSV有额外的行

字符串中有一个字符是换行符。检查字符是什么?字符给我8232 当我手动将该字段用双引号括起来时,效果很好。但是我如何才能使用引号生成CSV呢?您必须使用定义自己的CSV解析器,手动传递要在:选项保留键下转义的代码点列表,如文档中所述 关于是使用默认ISO解析器还是自己的实现,您没有提供任何信息,也没有提供输入示例。此外,目前还不清楚你是想扔掉它们,还是想妥善逃离它们 下面是关于如何处理自定义代码点并转义它们的最全面的典型示例 NimbleCSV.defineParser, 分隔符:,, 逃逸:\

Elixir 使用Enum.map创建密钥映射

简单的问题,我有这两张地图 [{“非洲”,1},{“美洲”,2},{“欧洲”,3}] [{“刚果”,1,1},{“法国”,2,3},{“西班牙”,3,3},{“美国”,4,2},{“埃及”,5,1}] 我想使用Enum.map和Enum.filter获得以下结果 [ 非洲:[{“刚果”,1},{“埃及”,1}], 美国:[{“美国”,4}], 欧洲:[{“法国”,2},{“西班牙”,3}] ] 我已经尝试了以下组合,但我没有得到预期的结果。你能帮点忙吗 Enum.map( [{“非洲”,1

Elixir 剥离/检查的惯用方法:ok和管道第二个参数

我喜欢管道,Elixir喜欢管道,但返回{:好的,实际返回值}似乎也很常见。用管道处理这个问题有一个习惯用法吗 我现在正在学习“编程长生不老药”,下面的练习解决方案可能是可行的,但不完整 File.cwd() |> IO.puts() 我不是在寻找这个解决方案: {:ok, ret} = File.cwd() IO.puts(ret) 如果您想将值打印到stdout,您有几个选项,但这里有两个最接近您的示例 File.cwd() |> inspect() |> IO.put

Elixir 长生不老药图书馆推荐

我正在做一个物联网项目,我最近发现。目前,我将node.js与noble一起使用,我想用nervous替换它,用于Raspberry Pi上的网关。我没有发现任何类似的东西,并维持长生不老药 有人知道长生不老药中的BLE库吗?不幸的是,BLE在神经上没有得到很好的支持。您可以在项目存储库中查看当前选项 神经维护者的最终意见: 结束。如果你对蓝牙神经感兴趣,请退房 . 将问题归档或转到 Elixir lang slack的神经蓝牙频道支持 我害怕这个答案:(.我想知道为什么在开源中对BLE的承诺如

Elixir 如何通过phoenix在服务器上上传文件

我正试图上传图像文件到服务器的凤凰城。 我没有找到任何好的例子 下面的代码是我编写的,但不起作用。 我有以下错误 no function clause matching in FileUploadWeb.PageController.upload/2 控制器 defmodule FileUploadWeb.PageController do use FileUploadWeb, :controller def index(conn, _params) do render(co

在使用Elixir/Phoenix进行编辑期间,如何使文件上载字段保持一致?

在我的表单模板中,我有以下代码段: <%= label f, :event_banner_image %> <%= file_input f, :event_banner_image %> <%= error_tag f, :event_banner_image %> 使用这些图像之一创建一个新事件(从“/events/new”)效果很好,但是当我去编辑事件时,文件输入是空的。在某种程度上,这当然是因为服务器不知道上传文件的本地路径。即便如此

Elixir或Hex便携包格式?

elixir代码是否有可移植的格式?除了明显的焦油 例如,如果我想向另一个团队的客户机或其他开发人员提供一个或多个模块(不使用github)。我该怎么做 其他一些熟悉的语言的答案是:Ruby-gem、Java-jar、Python-egg等。这取决于您想要提供什么 我将在下面讨论三个选项,它们都可以通过我们的构建工具Mix获得 打包源文件。如果您想提供代码供其他开发人员在其项目中使用,Hex是最好的选择,因为它也知道如何获取和解析依赖项。调用mix local.hex安装它,然后调用mix l

Elixir 是否可以获取带引号的字符串文字的行号?

我正在为Elixir编写一个linter,它主要通过检查从code.string\u到\u quoted/2返回的AST来工作。当我的应用程序发现被认为是样式冲突的内容时,我会使用节点元数据中的行号进行报告 字符串是引用形式相同的文本之一,因此没有元数据。当我只看字符串,不能从周围的表达式中绘制行号时,如何获取行号 例如,我想要这个字符串 ~s(\n"\\"") 在检查时导致第2行出现报告错误,但返回值没有行号 iex(18)> Code.string_to_quoted ~S(\n"\

Elixir prod环境中的资产,以及文件上载

我正试图了解静态资产在生产环境中是如何工作的,文档似乎有点吓人,但可能就是我 根据,我应该运行MIX\u ENV=prod MIX phoenix.digest,作为部署的一部分。这似乎复制了我的所有资产,将一个字符串连接到名称,如果使用static\u path/2,则会提供该名称,我想这与部署时缓存bust有关。太好了 digest函数还在我的priv文件夹中创建manifest.json,如下所示 {“images/calltoaction.png”:“images/calltoacti

Elixir 凤凰控制器-单数还是复数?

我知道Rails有一个非常可靠的约定,即拥有多个控制器名称,例如CustomersController。似乎长生不老药不会在意,因为路线是不同的。菲尼克斯有没有一种惯用的命名控制器的方法?菲尼克斯的控制器、模型和视图都是单数的。因此,以客户为例,约定是: 客户控制器 客户视图 顾客 支持模型的模式和表是复数的 迁移将使用: 创建表(:客户) 模式将使用: schema“客户” 将单个和多个版本传递到生成器: mix phoenix.gen.html客户客户为了避免Rails中因使用单数和复数而产

Elixir/Phoenix控制器助手的惯用函数名

我正在我的Phoenix web应用程序中编写一些get帮助程序。在rails中,您通常会命名(或缺少方法)助手,如通过电子邮件(email)查找帐户,等等 模式匹配似乎是Elixir/Erlang的核心,我想知道我是否更适合编写以下帮助程序: def get_account({email: email}) do # ... end Phoenix去掉了一个get\u account(id)方法,所以我觉得在模式匹配中重用名称更为惯用?欢迎使用Stack Overflow 虽然可能被称为“

Elixir 如何使用函数参数作为键从映射中获取值 def mapdna(dna)do dnarna=%{“G”=>“C”、“C”=>“G”、“T”=>“A”、“A”=>“U”} 德纳纳[脱氧核糖核酸] 结束

当我将“G”传递给mapdna时,它应该返回“C”请尝试以下操作: defmodule My do def mapdna(dna) when is_binary(dna) do %{"G" => "C","C" => "G","T" => "A", "A" => "U"}[dna] end end #IO.puts My.mapdna(:G) IO.puts My.mapdna("G") 在elixir中,要测试参数是否是字符串,您使用的是\

上一页 1 2 ...  5   6   7   8    9   10   11  ... 下一页 最后一页 共 125 页