我从客户端传入的参数列表中创建了一个查询列表:
[
#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)
但是,我需要遍历此列表并编写一个查询,该查询是所有查询的累加......(下一个查询的输入是当前查询等。)
有人能指出我如何做到这一点的正确方向。这将不胜感激!
我知道我可以一一撰写查询。但是我从客户端获取参数并且有一长串字段(品牌、类型等),并且不想对每个字段进行单独的查询。
我想要一个/api/api_endpoints/列出所有公共 api 端点的端点。类似于mix phx.routes,但我只想列出类似的内容
...
GET /api/users
PUT /api/users/name
...
Run Code Online (Sandbox Code Playgroud)
像这样的东西。我查看了文档,但没有看到任何列出路线的内容。
我创建了一个新项目,使用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
我尝试重新打开命令提示符,重新启动笔记本电脑并使用不同的文件夹
我正在尝试使用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)
该输出是否表明具体发生了什么?
我正在尝试将一些项添加到列表中,但仅在条件为真时才添加.我的函数实际上是在条件为假时存储空数据.
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) 我正在尝试查询表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) 我对 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)偶然发现了这一点,请发布您的解决方案 - 概念是相同的。
我正在开发一个需要多语言的应用程序.
我正在尝试按照本教程进行国际化.但是,当我尝试"使用Base Internationalization"时,我的故事板都没有列在视图中.
我正在使用XCode 4.6.3
我在这里遗漏了什么,或者我应该采取不同的方法?
任何和所有的帮助表示赞赏.
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) 我想出了一种使用arc和arc_ecto在本地上传附件的方法。但是,我想找到一种方法,让我的应用程序的用户只需单击浏览器上的下载按钮即可下载或保存这些上传的文件。下载的文件将位于单独的文件夹中。
我已经浏览了很多来源,但我似乎还没有得到它。
请问我该怎么做?