我想知道是否有一种方法可以确定数组是否按顺序和连续排列。比如说
arr=[1,2,3,4,5]
Arr将返回true,因为它是连续的
arr2=[1,2,3,4,56]
这将返回false,因为56不是紧跟在4之后。我尝试了很多方法,但是很难,因为没有循环您可以使用Enum.reduce,初始值为元组{true,nil}表示{“列表仍然是连续的和顺序的吗?”,“reduce处理的最后一个元素”}
如果您的列表很长,可以使用Enum.reduce\u while获得更有效的解决方案:
{is_
我想这样写代码:
def boundary do
:crypto.rand_bytes(8)
|> Base.encode16
|> &("--------FormDataBoundary" <> &1)
end
def boundary do
add_marker = fn (s) ->
"--------FormDataBoundary" <> s
end
:crypto.rand_bytes(8)
标签: Elixir
phoenix-frameworkecto
我刚开始使用异位和长生不老药,我遇到了一个无法解释的错误。我的代码看起来就像Exto自述文件中的示例
以下是我的EXTO模型和查询模块
defmodule Registration do
use Ecto.Model
schema "registrations" do
field :user_id, :string
field :created_at, :datetime, default: Ecto.DateTime.local
field :updated_
假设我有一个函数的定义:
def rename(src, dst) do
<do rename>
end
因此,当用户可以同时使用我的库中的rename和mv函数时?我能想到的最简单的方法是通过
请注意,这定义了另一个函数bar/0,如果您的方法接受参数,它将调用foo/0:
您还需要在defdelegate中指定参数:
defmodule MyModule do
def awesome_func(term, opts \\ []) do
# Do Somethi
我已经开始使用Elixir+Phoenix框架,并开始合并用于用户注册/身份验证的库
addict的文档告诉我更新:addict应用程序的config.exs
config :addict, not_logged_in_url: "/error",
db: MyApp.MyRepo,
user: MyApp.MyUser,
:
在我运行mix deps.compile以获取配置之前,替换db
在每个控制器操作中使用put\u Layout方法是否是更改模板布局的正确/最简单的方法?一个简单的例子是,想要为不同的控制器设计不同的布局,这似乎变得非常重复(见下文),因此我觉得框架中缺少了一些东西
defmodule MyPhoenix.AController do
use MyPhoenix.Web, :controller
def pageOne(conn, _params) do
conn
|> put_layout("Lay
我正在寻找一种在phoenix框架中实现自定义通道的方法,我不想使用这些主题,而是基于负载进行路由
例如,我有这样一条json消息
{
"command":"hello",
"payload": {
"message_id":"001",
"body":"is it me your looking for"
}
}
}
并且想根据“command”的值进行路由,我不知道从哪
如何循环字典中的键值对并获取每个项的值?我想出了这个,但我总是出错
defp进程值(票证)do
IO.inspect ticket.value这不起作用
结束
Repo.all(Ticket)#获得所有门票
|>枚举.分组依据(&(&1.聚合依据id))#分组依据id
|>听写列表?可能不需要?
|>Enum.map(&(processValues(&1))#返回已处理的票证
看一看。我想特别提醒您注意文件的这一部分:
iex> for {key, val} <- %{"a" =&
我有一个简单的Go-for循环,我想学习如何使用Elixir中的递归实现这一点。我现在真的不知道递归循环是如何工作的,但我正在做这方面的工作!我也不知道这是否是做递归函数的正确方法
package main
import "fmt"
func main() {
for i := 0; i < 10000000; i++ {
fmt.Println(i)
}
}
defmodule Looping do
def loops(i, e) w
我需要匹配到不同控制器的路由上的不同模式
示例:匹配http://localhost:4000/至PageController@index,我有:
get "/:page", PageController, :show
现在,我需要添加另一条仅与以下模式匹配的路线:
应该与UserController@profile
我该怎么做?对于包含@的路由,没有什么不同:
get "/@:user", UserController, :profile
只需确保将这一点置于其他任何可能匹配的因素之上(
一个用户有很多电子邮件。如何创建新的用户,并在表单中嵌套一封新的电子邮件
user\u controller.ex
[...]
def new(conn, _params) do
changeset = User.changeset(%User{})
render(conn, "new.html", changeset: changeset)
end
[...]
[...]
<%= inputs_for f, :emails, fn ef -> %>
<di
标签: Elixir
phoenix-frameworkjson-api
我正在使用库在phoenix应用程序中编写一个投诉api。请求仅通过:api管道路由,该管道看起来像:
管道:api do
plug:accepts,[“json api”]
插头JaSerializer.ContentTypeNegotiation
结束
控制器/动作基本上是:
defmodule MyApp.Api.DataController do
使用MyApp.web,:controller
def显示(连接,参数)do
query=#构建一个查询
渲染(conn、Repo.one查
标签: Elixir
phoenix-frameworkecto
我最近迁移到了最新版本的phoenix和Exto
现在,我已经改变了一个模型的代码,根据ecto changelog到
defmodule Spaces.Tag do
use Spaces.Web, :model
#Changed to below
defmodule Spaces.Tag do
use Ecto.Schema
我得到了(CompileError)web/models/tag.ex:23:undefined function cast/4。我缺少什么
我的mix.exs
我有两种型号,User和Role用户有许多角色。我还设置了外键约束(如果有任何用户具有此角色,则不能删除角色)
我在尝试实现时出错
Role
|> Repo.get(id)
|> Repo.delete
错误是:
** (Ecto.ConstraintError) constraint error when attempting to delete struct:
* foreign_key: users_role_id_fkey
If you would lik
标签: Elixir
phoenix-frameworkecto
在我的应用程序中,节目和剧集之间有一对多的关系。节目可以有很多集。在制作一集时,我可以通过以下方式与节目建立关联:
def create(conn, %{"episode" => episode_params}) do
show = Repo.get!(Show, episode_params["show_id"])
changeset =
show
|> build_assoc(:episodes)
|> Episode
我不熟悉Elixir,我正在编写一个概率算法来学习该语言,但我需要使用一个外部库。我已通过将其添加到mix.exs文件依赖项来安装它:
defp deps do
[{:sfmt_erlang, app: false, git: "https://github.com/jj1bdx/sfmt-erlang.git"}]
end
而且编译正确。但是如何在代码中使用实际的库呢?我试过了
导入sfmt\u erlang
但是它抛出了未定义的函数sfmt_erlang/0要在Elixir项目
我正在使用频道来实现聊天。当一个人离开聊天室时,我想通知特定的客户那个人已经离开了
这就是我发现的:
def terminate(reason, socket) do
Logger.info "terminated!!!!"
Logger.info inspect(reason)
Logger.info inspect(socket)
{:noreply, socket}
end
有没有办法自定义终止/2,以便我可以向它传递ID或其他什么?与/3中的ha
例如:
班级和学生。
一个班级将有许多学生处于一种“有许多”关系中,分组为有许多助理或有许多部分。
实际上,这在语义上是无用的。我想知道两个模型之间是否可能存在多重关联
# Class
class has_many :attendants, Students, foreign_key: :student_id
class has_many :sections, Students, foreign_key: :student_section
# Student
student belongs_t
我正在尝试在凤凰城建立一个基本数据库,并想要一个类似于视频的模型——基本上使用有很多——同时上传类似的
在我的例子中,我希望允许用户上传多个.csv,它们被添加到数据库中。现在,我将一个.csv上传限制在创建一个用户上,以集中精力完成这么多工作。我也不关心我将存储什么——现在,指向.csv所在位置的路径只是简单地开始。将来,我可能希望直接存储csv数据
我在用户参数中获得了%Plug.Upload,并且能够将其写入文件,但我不确定如何将该路径添加到数据库中
def change do
alt
我正在研究Dave Thomas的编程长生不老药,我正在尝试列表一章中的一些例子
当我学习一门语言时,我喜欢通过运行尽可能地保持基础。在本例中,我正在运行elixir reduce.exs
reduce.exs的内容:
require IEx;
defmodule MyList do
def reduce([], memo, _), do: memo
def reduce([head | tail], memo, func) do
IEx.pry
reduce(tail
标签: Elixir
phoenix-frameworksystem-shutdown
是否可以通过向web服务器发送请求来重新启动系统?以下是我到目前为止尝试过的内容,但不断收到错误(Plug.Conn.notsenterro)未设置响应,也未从连接发送响应
defmodule App.Web.SystemController do
use App.Web, :controller
def system(conn, %{"command" => command}) do
"sudo shutdown -r now" |> String.to_cha
当插入具有唯一索引的数据时,我只想更新更新的_at值,而不是id+1。如何操作
Repo.insert_all(Ecto.module, all, on_conflict: :replace_all)
关于冲突:设置
我不知道怎么知道现在的时间,
exto.DateTime.utc为错误
我如何编写回购协议
模式(模型)
为了更好地理解,您可以添加模式(模型)吗对不起,我认为模型不是必需的,但是现在就添加它。您必须根据文档第3段找到任何其他替代方案来更新所有内容。但是,这就是我如何使用upda
标签: Elixir
integration-testingphoenix-framework
我有一个用于登录用户的端点。我写了集成测试和控制器测试,但它们看起来非常相似,只是我在控制器测试中测试了更多的边缘案例(例如,用户试图使用错误的电子邮件登录)。测试的内容看起来并没有什么不同,所以如果有人能解释一下他们应该如何不同,那就太好了
集成测试:
defmodule SigningInUserTest do
use ParrotApi.ConnCase
alias ParrotApi.Router
@opts Router.init([])
describe "POST
标签: Elixir
phoenix-frameworkecto
我有一个phoenix/phx v1.3项目,我一直在工作,在尝试使用iex会话创建用户时遇到了一个问题。据我所知,我写的代码应该可以工作,因为应用程序可以编译
我运行下面的生成器为用户帐户设置schema
mix phx.gen.json Accounts User users email:string encrypted_password:string username:string
然后,我学习了一些教程,介绍如何通过修改
/lib/kegcopr_api/accounts/user.e
在我的Phoenix应用程序中,我想向URL添加一个查询字符串:
some_cool_path(@conn, :index, "view-mode": "table")
我希望它会生成一个URL,如/some\u cool?view mode=table,但它会引发一个异常:
protocol Phoenix.Param not implemented for ["view-mode": "table"]
如何修复此问题?要从关键字列表构建查询字符串,可以使用:
但这似乎不是问题所在。如果
我有一个csv文件,其中包含用户列表和UserController中的以下导入方法,我希望通过提交csv文件和表单来导入这些用户。看起来我做错了
用户\u控制器
def import(conn, %{"user" => user_params}) do
user_params["file"]
|> File.stream!()
|> CSV.decode
|> Enum.each(fn(user) -> User.changese
标签: Elixir
phoenix-frameworkbcrypt
首先,我在Windows10中开发。每次编译之前,我都会运行vcvvarsall.bat amd64。我正在使用:
长生不老药1.4.2
凤凰城1.2.1版
我开始了一个全新的项目,制作了一个用户表,一切都很好。我添加了comeonin来散列pw,我不能再创建用户了。我收到一个错误页面,上面写着:
函数Comeonin.Bcrypt.hashpwsalt/1未定义(模块Comeonin.Bcrypt不可用)
以下是相关文件中的代码:
Mix.exs
User.ex
当我试图保存一个调用gen
我的团队正在开发phoenix/elm应用程序,并决定将这两个项目保留在单独的回购协议中,并从phoenix应用程序“指向”elm应用程序。这对我来说是一个新的领域,我一直在寻找不同的方法来实现这一点。我曾尝试通过package.json将Elm应用程序作为依赖项导入,但我认为node_modules/无法识别Elm代码。我还尝试通过mix.exs将其作为依赖项导入,但再次尝试deps/it以查找exs文件。有其他方法吗?菲尼克斯作为资产管理公司提供。我已经成功地使用Brunch将我的Elm代码
我现在正在浏览长生不老药官方网站,学习有关混合的知识。我正以他们为榜样
文件中提到:
编译源代码时,Elixir将工件编译到
_生成目录。然而,在许多情况下,为了避免不必要的复制,Elixir将创建从_build到实际的文件系统链接
源文件。如果为true,:build_embedded将禁用此行为,因为它
旨在提供在内部运行应用程序所需的一切
_建造
我对这段摘录有几个问题:
什么是文件系统链接?它只是指像“宾/长生不老药”这样的东西吗
您能重新表述“Elixir将创建从_build到实际源文
我有一个Phoenix应用程序正在生产中,但我注意到,每当出现错误时,它会直接导致整个应用程序崩溃,而在开发过程中它不会。首先,我尝试填充所有错误,但后来我认为Elixir/Erlang不是这样工作的,在开发中尝试了相同的操作,错误只记录了一次,崩溃的任务重新启动,同时在prod中,它多次记录相同的错误并崩溃整个应用程序。我不确定这是否与我的配置有关,这是我现在为prod提供的端点配置
config :appname, AppName.Web.Endpoint,
on_init: {AppN
不确定为什么EXTO返回不正确的结果。
我可能把事情搞砸了
这是我的异位查询
from u in User,
join: c in assoc(u, :companies),
join: r in assoc(c, :roles),
join: a in assoc(r, :assets),
where: u.id == ^2 and a.id == ^1,
group_by: [c.id, u.id, r
Enum.chunk\u every([1,2,3,4,5,6,2])
在控制台上给出输出[[1,2],[3,4],[5,6]]
但是,Enum.chunk_every([1,2,3,4,5,6,7,8],2)
给出[[1,2],[3,4],[5,6],'\a\b']
为什么它会为某些整数返回ascii字符?这不是一个Enum.chunk\u every/2的问题,而是一个事实,即根据ascii表,“可打印”的字符将显示为ascii字符
检查答案
为了避免有些人在列表最开始的末尾添加0,或者忽略
标签: Elixir
phoenix-frameworkecto
我可以使用EXTO查询软删除、关联的数据库条目。查询方法如下:
query=来自资源中的r,
在:[资源\u id:r.id]上加入关联
其中:为零(a.deleted\u at)
全部回购(查询)
对于一些嵌套很深的关联来说,这会变得单调乏味。如何使用exto.Repo的内置预加载函数查询适用于所有关联的where子句
我想做一些类似的事情:
Repo.get(Resource,1)|>Repo.preload(:关联,其中:[deleted_at==nil])
这样做可能吗,或者我可以使
在下面的示例中,IEnum.mapa列表,根据某些条件,我可以接收单个项目或项目列表。
如果我只收到一个项目,我将结束一个列表。
但是,如果我还收到另一个列表,我将结束嵌套列表
defmodule TestQuery do
def build_query() do
Enum.map(["test1", "test2", "hello"], fn item ->
query(item)
end)
end
def query(item) do
标签: Elixir
phoenix-frameworkguardian
在使用Guardian对JWT令牌验证GET请求后,我尝试使用JSON进行响应
我的测试:
describe "Show user if authenticated" do
setup %{conn: conn} do
{:ok, %User{} = user} = Riders.create_user(@create_attrs)
{:ok, jwt, claims} = Bikefit.Guardian.encode_and_sign(user)
我使用一个CSV模块导入一个CSV文件,它将数据存储在一个地图中,所有这些都可以工作,给我通常的数据映射结果。然后,我需要获取映射数据并将其发送到exto.repo。这是使用标准attrs参数,然后将其解压缩并发送到要发送到数据库的变更集。如何迭代每个键并返回值,然后获取每个子值并将其传递给exto.repo.create_对象
%{{:ok, ["key", "key", "key"]} => {:ok, ["value", "value", "value"}}..}
所有键和值映射完
我想在Elixir中生成一张地图,大致如下:
[1: 1, 1: 2, 1: 3, 2: 1, ..... , 3: 3]
代码如下:
n = 3
map = %{ 0, 0}
for x <- 1..n do
for y <- 1..n do
map = %{map | x, y}
end
end
n=3
map=%{0,0}
对于x你的问题有很多问题
map=%{0,0}不是正确的映射语法
Elixir的数据是不可变的,并且具有
标签: Elixir
phoenix-frameworkguardian
我正在尝试测试我的控制器,但我一直遇到“未经验证”的错误。我想我知道哪里出了问题,但我不知道为什么它不起作用。这是我的
setup %{conn: conn} do
user = insert(:user)
{:ok, jwt, _} = Guardian.encode_and_sign(user, :api)
conn = conn
|> put_req_header("accept", "application/json")
|> pu
我很难理解如何在视图中调用Javascript函数。我想要实现的是一个HTML表,其中一些字段根据一些参数定期更新
因此,我需要一个带有参数的函数,该函数获取相应的HTML元素,并设置设置elements.innerHTML的间隔。到目前为止,一切顺利。我有这个功能
export default function calcActual(amount, gain, time, index) {
var td;
td = document.getElementById('ressource_' +
标签: Elixir
phoenix-frameworkecto
在Phoenix app start上调用从数据库加载一些数据的函数的最简单方法是什么?因此,我需要我的函数有一个exto.Query goodness任其支配,并在凤凰开始提供任何请求之前被调用。你可以在启动时在我的应用程序/application.ex中的回购和端点主管之间启动一个工作程序:
# Define workers and child supervisors to be supervised
children = [
# Start the Ecto repository
我想使用模块HTTPoison。我如何使用它
我的mix.exs文件:
defmodule Api.MixProject do
use Mix.Project
def project do
[
app: :api,
version: "0.1.0",
elixir: "~> 1.6",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
我正在尝试加载一个网页,其中我感兴趣的数据在初始页面加载后通过Ajax加载。当我获取页面时,我当前看到的文本是加载记录…
我想知道在数据返回给我之前,我可以使用什么技术来等待该部分加载完毕
目前我正在使用ElixirHTTPoison库,但我对Elixir/Erlang中的不同技术持开放态度。像HTTPoison这样的库只发出初始web请求,返回“服务器呈现”的内容。它们不处理客户端代码和标记。您需要一个无头浏览器/web驱动程序,如PhantomJS,来实际处理它并执行javascript代码
我正在尝试使用名为“乌龟”的长生不老药中的MQTT库。每当我使用iex-SMIX时,我都可以让信息发送正常工作。但是,当我使用mix start开始启动任务时,程序将无法工作。我得到一个未知的注册表:乌龟。注册表错误
我可以毫无错误地启动Turtoise的supervisor,只有当我尝试使用Tortoise.supervisor.start\u child启动该进程的子进程时,我才会得到错误
defmodule Mqtt.Begin do
require Tortoise
def start
Elixir给了我一个错误,说这和进程名有关,但我不知道如何修复它
我的mix.exs文件如下:
defmodule Crowller.MixProject do
使用Mix.Project
def项目do
[
应用程序::克劳勒,
版本:“0.1.0”,
长生不老药:“~>1.7”,
start_permanent:Mix.env()==:prod,
deps:deps()
]
结束
#运行“mix help compile.app”了解应用程序。
def应用程序do
[mod:{Crowll
标签: Elixir
phoenix-frameworkecto
因此,我有3张表借贷者,化身和贷款
借用者->拥有一个化身
借款人->有很多贷款
贷款控制员
def list_borrowers do
query =
from(
p in Borrower,
select: p,
preload: [:avatar],
preload: [:loan] # I WANT TO AGGREGATE THIS USING COUNT
)
IO.inspect(Repo.all(query))end
这工作正常我的问题
我不熟悉长生不老药,但我找不到我的问题的答案。
以下是我在iex中输入的一些示例
expression result
9 || true 9
true || 9 true
9 && true true
true && 9 9
因此,当有一个|时,它将计算到第一个参数,当一个参数不是布尔值时,&&将计算到最后一个参数。
如何实现|和&&?他们为什么返回这些结果?这是短路布尔逻辑环境中的一种通用语言工具。要抛出一些有用示例的伪代码,请执行
当我无意中忽略函数的返回值时,有没有办法从elixirc编译器、Credo或其他一些linting工具获得警告
也就是说,我想在这个示例中看到一个警告,它忽略了increment\u state()的结果:
在上面的示例中,我们“打算”从handle\u info/2调用返回递增状态,而不是“old”状态;也就是说,我们打算让服务器打印1、2、3。。。而不是重复打印1
如果示例代码故意忽略了增量状态/1调用的结果(例如,将其分配给),则无需发出警告
我查看了Credo的配置选项,但找不到任何符合
标签: Elixir
phoenix-frameworkplug
插头管道是构建应用程序的一种神奇方式。目前,我只在请求到达控制器之前应用管道来过滤/格式化数据。是否有一种方法可以在处理每个视图后应用管道来运行?我有一个JSON api,在每个视图渲染函数上运行两个数据转换
def render("app.json", %{app: app}) do
app
...
|> ApiHelpers.add_data_property
|> ProperCase.to_camel_case
en
标签: Elixir
phoenix-frameworkphoenix-live-view
我正在尝试建立一个基本的聊天室,这时我发现了一个奇怪的行为。可能是因为我对菲尼克斯模板缺乏了解
尝试使用将CSS类动态分配给组件时:
问题是,它被呈现为而不是,您需要在HTML中使用双引号(即EEx语法之外),如下所示:
<div class="<%= if msg.user == @user, do: "msg local-user", else: "msg other-user" %>">
也许您需要
我自定义phx.gen.html模板以使用TailwindCSS。在:show模板中,我使用以下代码:
<%= for {{k, _}, counter} <- Enum.with_index(schema.attrs) do %>
<% bg_color = if Integer.is_even(counter), do: "bg-gray-50", else: "bg-white" %>
<div class
上一页 1 2 ...
62 63 64 65 66 67 68 ...
下一页 最后一页 共 125 页