标签: elixir

'handle_call'超时了

我从GenServer中的句柄信息功能调用elixir genserver来添加电话号码获取表单客户端.但是一旦调用handle_call,所有者进程就会崩溃[timeout].请帮忙.

全局创建一个ETS以在调用任何下面描述的函数之前插入值.

def handle_info(message, state) do

    {a,b} = message
    phonenumber = b[:body] 
    add phonenumber
    {:noreply, state}
end

def add(phonenumber) do
    GenServer.call(__MODULE__, {:add, phonenumber})
end


def handle_call({:add, phonenumber}, from, state) do

    :ets.insert(:access_table, {:details, phonenumber})
    reply = {:ok, "Added #{phonenumber} to profile"}
    new_state = [{username} | state]
    {:reply, reply , new_state}
end
Run Code Online (Sandbox Code Playgroud)

错误:

** When Server state == []
** Reason for termination == 
** {timeout,{gen_server,call,['Elixir.Bankrecord',{add,"346534543534"},5000]}}
** (EXIT from #PID<0.150.0>) exited in: :gen_server.call(Bankrecord, {:add, '346534543534'}, 5000)
** (EXIT) time out
Run Code Online (Sandbox Code Playgroud)

elixir gen-server

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

使用Ecto和Elixir的默认日期时间

我今天刚刚开始使用Elixir和Phoenix,我试图将Ecto添加为映射器,但是我在使用时间时遇到了一些麻烦.

这是我的模特.

  schema "users" do
    field :name, :string
    field :email, :string
    field :created_at, :datetime, default: Ecto.DateTime.local
    field :updated_at, :datetime, default: Ecto.DateTime.local
  end
Run Code Online (Sandbox Code Playgroud)

我试图在默认情况下设置created_at和updated_at,但是当我尝试编译它时,我收到以下错误.

== Compilation error on file web/models/user.ex ==
** (ArgumentError) invalid default argument `%Ecto.DateTime{day: 13, hour: 19, min: 47, month: 2, sec: 12, year: 2015}` for `:datetime`
lib/ecto/schema.ex:687: Ecto.Schema.check_default!/2
lib/ecto/schema.ex:522: Ecto.Schema.__field__/4
web/models/board.ex:9: (module)
(stdlib) erl_eval.erl:657: :erl_eval.do_apply/6
Run Code Online (Sandbox Code Playgroud)

获取文档没有太大帮助,这样做的正确方法是什么?

postgresql elixir ecto

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

有没有办法迭代传递给Elixir中函数的所有参数?

我知道可以将一个单独传递list给一个函数然后迭代它.但是,我更喜欢具有更明确签名的函数.所以我真正想知道的是Elixir是否有任何arguments与Javascript中的对象相同的东西.

据我所知,答案是否定的.我在讨论这个话题时最接近的是这个问题的答案.

我正在寻找这个功能的原因是,我有几次发现自己将相同的转换应用于多个参数,这有点单调乏味.这可能是通过宏实现的吗?

elixir

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

凤凰城框架回调

Phoenix Framework是否使用任何类型的回调过滤器,例如Rails中的回调过滤器?我知道这是可能来验证的变更,但是我正在寻找方法来实现,例如动作before_create, before_saveafter_commit.

elixir phoenix-framework

8
推荐指数
2
解决办法
1401
查看次数

如何删除Phoenix会话?

我正在阅读凤凰城会议指南.它很好地解释了我如何使用put_session以后使用和获取值来将数据绑定到会话,get_session但它没有告诉我如何删除用户的会话.

从指南:

defmodule HelloPhoenix.PageController do
  use Phoenix.Controller

  def index(conn, _params) do
    conn = put_session(conn, :message, "new stuff we just set in the session")
    message = get_session(conn, :message)

    text conn, message
  end
end
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

8
推荐指数
2
解决办法
5020
查看次数

在Phoenix中使用带有多个控制器的自定义视图

Phoenix,有什么方法可以指定使用哪个View而不是让Controller命名空间中的变形?

我有多个控制器,每个控制器的视图方法都相同.我想创建一个单独的视图,并与(几乎)我的所有控制器一起使用它.

这可能吗?更重要的是,这是一种不好的做法还是在我的情况下是合理的?

elixir phoenix-framework

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

如何从Elixir中的字符串中删除逗号?

我想知道如何从给定的字符串中删除逗号.我的尝试是:

st = "1,2,3"
String.strip(st, ?,)
#=> "1,2,3"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

elixir

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

redux-form和elixir/phoenix的文件附件作为后端API(序列化问题)

product我的elixir/phoenix后端有两个控制器.第一 - API端点(pipe_through :api)和第二个控制器piping through :browser:

# router.ex
scope "/api", SecretApp.Api, as: :api do
  pipe_through :api

  resources "products", ProductController, only: [:create, :index]
end

scope "/", SecretApp do
  pipe_through :browser # Use the default browser stack

  resources "products", ProductController, only: [:new, :create, :index]
end
Run Code Online (Sandbox Code Playgroud)

ProductController处理来自elixir表单助手生成的表单的请求,并接受一些文件附件.一切都很好.这是由此操作处理的create action和params:

def create(conn, %{"product" => product_params}) do
  changeset = Product.changeset(%Product{}, product_params)

  case Repo.insert(changeset) do
    {:ok, _product} ->
      conn
      |> put_flash(:info, "Product created successfully.")
      |> redirect(to: product_path(conn, :index))
    {:error, changeset} -> …
Run Code Online (Sandbox Code Playgroud)

file elixir reactjs redux redux-form

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

Elixir中的枚举词

我想在Elixir中创建一个枚举.可能吗?通过枚举我的意思是来自C/C++或Ruby或许多其他语言的枚举.我知道Enum模块,但这只是一个模块 - 基本上是函数的容器.

elixir

8
推荐指数
2
解决办法
4469
查看次数

PostGIS - 路线匹配解决方案

我们正在建立一个应用程序,我是一名司机,我从A点到B点旅行.在我的路上,我可以找到以相同路线旅行的乘客.

我们正在使用PostgreSQL和PostGIS扩展.

经过谷歌搜索后,我发现我们可以使用线串来实现这一点.我不完全确定这种方法是否会成功.

假设我有源和目的地的坐标.

    var RouteCoordinates = [
      {lat: 37.772, lng: -122.214},
      {lat: 21.291, lng: -157.821},
      {lat: -18.142, lng: 178.431},
      {lat: -27.467, lng: 153.027}
    ];
Run Code Online (Sandbox Code Playgroud)

我需要将其存储为我的数据库中的线串.

如果一名乘客也在这条路线上行驶,但我们知道他的来源和目的地不会完全在我的线路中,但他们会在附近.例如,半径约1km

在此输入图像描述

正如您所看到的那样,我的源和目的地就是那条线.当我旅行时,我想挑选所有那些(源和目的地)靠近我的路线(在特定半径范围内)的人

如果我想在特定半径范围内找到我的数据库中的特定位置,我将会这样查询

SELECT id, name, address, geom  
FROM Seattle_Starbucks  
WHERE ST_DWithin(geom, ST_MakePoint(-122.325959,47.625138)::geography, 1000);
Run Code Online (Sandbox Code Playgroud)

现在我可以实现我的解决方案,因为我刚接触postGIS有点令人困惑

  1. 如何在DB中存储我的所有源和目标点

ANS:我需要使用此函数ST_MakeLine转换为linestring,然后存储,对吧?

  1. 如上所述,如何根据我的要求查询

能否请您告诉我如何实现这一目标.非常感谢您的帮助.谢谢

postgresql postgis elixir geo ecto

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