小编Jus*_*ood的帖子

在 Elixir 中编写 Ecto 查询

我从客户端传入的参数列表中创建了一个查询列表:

[
  #Ecto.Query<from v in Video, where: v.brand == ^"Cocacola">,
  #Ecto.Query<from v in Video, where: v.type == ^"can">
]
Run Code Online (Sandbox Code Playgroud)

但是,我需要遍历此列表并编写一个查询,该查询是所有查询的累加......(下一个查询的输入是当前查询等。)

有人能指出我如何做到这一点的正确方向。这将不胜感激!

我知道我可以一一撰写查询。但是我从客户端获取参数并且有一长串字段(品牌、类型等),并且不想对每个字段进行单独的查询。

elixir ecto phoenix-framework

4
推荐指数
1
解决办法
736
查看次数

列出凤凰 API

我想要一个/api/api_endpoints/列出所有公共 api 端点的端点。类似于mix phx.routes,但我只想列出类似的内容

...
GET /api/users
PUT /api/users/name
...
Run Code Online (Sandbox Code Playgroud)

像这样的东西。我查看了文档,但没有看到任何列出路线的内容。

elixir phoenix-framework

3
推荐指数
1
解决办法
394
查看次数

无法创建 Rumbl.Repo 的数据库:被杀死

我创建了一个新项目,使用mix phx.new rumbl它工作正常。然后我使用cd rumbl. 之后我尝试运行mix ecto.create导致此错误消息:

D:\Elixir\Projects\rumbl>mix ecto.create

10:35:16.370 [error] GenServer #PID<0.212.0> terminating
** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused
    (db_connection) lib/db_connection/connection.ex:84: DBConnection.Connection.connect/2
    (connection) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol
** (Mix) The database for Rumbl.Repo couldn't be created: killed
Run Code Online (Sandbox Code Playgroud)

昨天 mix ecto.create 工作了,但现在它给出了这个错误。我已经安装了依赖没有任何问题 Elixir 版本:1.8.2 phoenix 版本:1.4.6

我尝试重新打开命令提示符,重新启动笔记本电脑并使用不同的文件夹

elixir phoenix-framework

3
推荐指数
1
解决办法
2921
查看次数

通过rake任务将CSV文件上传到Rails 4 DB

我正在尝试使用rake任务(rake data:import)从csv fle导入数据并且收到错误.过去几个月我一直在教自己,但经过一天半的谷歌搜索后,我找到了许多解决方案,但没有一个可以开始工作.

到目前为止,我的rake文件就在这里:

require 'CSV'
namespace :data do
  desc "Import teams from csv file"
  task :import => [:environment] do
    file=IO.read('filepath of my csv').force_encoding("ISO-8859-1").encode("utf-8", replace: nil)

    CSV.foreach(file, :headers => true) do |row|
      product.create ([
                       :name => row['name'],
                       :rating => row['rating'],
                       :year => row['year'],
                       :country => row['country'],
                       :state_or_province => row['state_or_province']]
                      )
    end

  end
end
Run Code Online (Sandbox Code Playgroud)

我没有得到任何具体的错误(据我所知).混淆我的输出是:

tasks/dataimport.rake:7:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

该输出是否表明具体发生了什么?

ruby csv rake rails-migrations ruby-on-rails-4

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

从具有条件的循环中将项添加到列表中

我正在尝试将一些项添加到列表中,但仅在条件为真时才添加.我的函数实际上是在条件为假时存储空数据.

hit_list = for {_mob, %{id: id}} <- get_mob_list(state.mobs) do
  if condition do
    id
  end
end
Run Code Online (Sandbox Code Playgroud)

输出:

[null, "2"]
Run Code Online (Sandbox Code Playgroud)

elixir

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

数据库片段查询错误“参数必须为长度0才能查询”

我正在尝试查询表building、jsonbmetadata列和google_place_ids属性(这是一个数组)中的 json 数组。

Elixir 给我一个错误:

这是片段生成的查询:

SELECT b0."id", b0."base_sku", b0."name", b0."logo", b0."email", b0."active", b0."sync", b0."building_group_id", b0."operating_region_id", b0."building_package_id", b0."metadata", b0."location", b0."inserted_at", b0."updated_at" FROM "buildings" AS b0 WHERE (b0."metadata"->'google_place_ids' @> '["$1"]') AND (b0."active" = TRUE) ["1234231223123"]
Run Code Online (Sandbox Code Playgroud)

这是代码:

defp query_by_google_place_id(query, google_place_id) do
from(b in query,
    where: fragment("?->'google_place_ids' @> '[\"?\"]'", b.metadata,  ^google_place_id),
    where: b.active == true,
    limit: 1)
end
Run Code Online (Sandbox Code Playgroud)

这是错误:

[error] #PID<0.1340.0> running Proxy.InstrumentedPlug terminated
Server: localhost:4000 (http)
Request: GET /something/google_place_id/1234231223123
** (exit) an exception was raised:
    ** …
Run Code Online (Sandbox Code Playgroud)

postgresql elixir ecto

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

二郎:做个戒指

我对 Erlang 很陌生(阅读“并发世界的软件”)。从我所读到的,我们将两个过程链接在一起以形成一个可靠的系统。

但是如果我们需要两个以上的进程,我认为我们应该将它们连接成一个环。尽管这与我的实际问题略有不同,但如果这不正确,请告诉我。

给出一个列表PIDs:

[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我想在{My_Pid, Linked_Pid}元组环中形成这些:

[{1,2},{2,3},{3,4},{4,5},{5,1}]
Run Code Online (Sandbox Code Playgroud)

我无法创建一个优雅的解决方案来添加最终{5,1}元组。

这是我的尝试:

% linkedPairs takes [1,2,3] and returns [{1,2},{2,3}]
linkedPairs([])         -> [];
linkedPairs([_])        -> [];
linkedPairs([X1,X2|Xs]) -> [{X1, X2} | linkedPairs([X2|Xs])].

% joinLinks takes [{1,2},{2,3}] and returns [{1,2},{2,3},{3,1}]
joinLinks([{A, _}|_]=P) ->
    {X, Y} = lists:last(P)
    P ++ [{Y, A}].

% makeRing takes [1,2,3] and returns [{1,2},{2,3},{3,1}]
makeRing(PIDs) -> joinLinks(linkedPairs(PIDs)).
Run Code Online (Sandbox Code Playgroud)

我在查看我的joinLinks函数时感到畏缩-list:last很慢(我认为),而且它看起来不太“实用”。

有没有更好,更惯用的解决方案?

如果其他函数式程序员(非 Erlang)偶然发现了这一点,请发布您的解决方案 - 概念是相同的。

erlang functional-programming

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

iOS国际化故事板未显示

我正在开发一个需要多语言的应用程序.

我正在尝试按照本教程进行国际化.但是,当我尝试"使用Base Internationalization"时,我的故事板都没有列在视图中.

我正在使用XCode 4.6.3

我在这里遗漏了什么,或者我应该采取不同的方法?

任何和所有的帮助表示赞赏.

internationalization ios

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

Elixir比赛?在模块中不起作用

defmodule CompareMaps do
  def match do
    map = %{a: 2, b: 3, c: 4}
    test = %{a: 3}
    match? test, map
  end
end

CompareMaps.match
true
Run Code Online (Sandbox Code Playgroud)

然而,iex中的相同比较产生相反的结果.

match? %{a: 4}, %{a: 3, b: 3}
false
Run Code Online (Sandbox Code Playgroud)

elixir

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

如何在凤凰城本地下载或保存文件

我想出了一种使用arc和arc_ecto在本地上传附件的方法。但是,我想找到一种方法,让我的应用程序的用户只需单击浏览器上的下载按钮即可下载或保存这些上传的文件。下载的文件将位于单独的文件夹中。

我已经浏览了很多来源,但我似乎还没有得到它。

请问我该怎么做?

elixir phoenix-framework

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