Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir,Absince如何在与Absince约会后创建用户?_Elixir_Graphql_Phoenix Framework_Absinthe - Fatal编程技术网

Elixir,Absince如何在与Absince约会后创建用户?

Elixir,Absince如何在与Absince约会后创建用户?,elixir,graphql,phoenix-framework,absinthe,Elixir,Graphql,Phoenix Framework,Absinthe,我试图获取在某个日期之前/之后创建的用户,但我收到了此错误 “消息”:“参数\“过滤器\”的值$filter无效。\n在字段\“insertedAfter\”中:应为类型\“NaiveDateTime\”,找到的是\“2018-05-13\” 这个错误是有道理的,因为“2018-05-13”不是NativeDateTime。。。然而,我认为NativeDateTime应该解析字符串“2018-05-13”。我正试图应用我从一本书中学到的东西,但却遇到了困难。我还创建了一个自定义日期标量,但基本上

我试图获取在某个日期之前/之后创建的用户,但我收到了此错误

“消息”:“参数\“过滤器\”的值$filter无效。\n在字段\“insertedAfter\”中:应为类型\“NaiveDateTime\”,找到的是\“2018-05-13\”

这个错误是有道理的,因为“2018-05-13”不是NativeDateTime。。。然而,我认为NativeDateTime应该解析字符串“2018-05-13”。我正试图应用我从一本书中学到的东西,但却遇到了困难。我还创建了一个自定义日期标量,但基本上遇到了相同的错误

我如何才能完成搜索用户创建后,一定日期与凤凰和苦艾酒

query($filter: UserFilter){
  allUsers(filter: $filter){
    id
    firstName
    lastName
  }
}

values
{
  "filter": {
    "insertedAfter": "2018-05-13"
  }
}
外部模式,帐户>user.ex

schema "users" do
  field :avatar_img, :string
  field :email, :string, null: false
  field :fb_token, :string
  field :first_name, :string
  field :google_token, :string
  field :last_name, :string
  field :password, :string, null: false
  field :admin_user_id, :string

  timestamps()
 end
类型.ex

 use Absinthe.Schema.Notation
 use Absinthe.Ecto, repo: ElixirBlog.Repo
 import_types Absinthe.Type.Custom

 object :user do
  field :id, non_null(:id)
  field :first_name, non_null(:string)
  field :last_name, non_null(:string)
  field :email, non_null(:string)
  field :password, non_null(:string)
  field :avatar_img, :string
  field :admin_user_id, :string
  field :fb_token, :string
  field :google_token, :string
  field :inserted_at, :naive_datetime
  field :updated_at, :naive_datetime
end
苦艾酒图式 schema.ex

use Absinthe.Schema
import_types Elixir.Schema.Types

input_object :user_filter do
  field :id, :integer
  field :first_name, :string
  field :last_name, :string
  field :email, :string
  field :inserted_before, :naive_datetime
  field :inserted_after, :naive_datetime
end

query do
  field :all_users, list_of(:user) do
   arg :filter, :user_filter
   arg :order, type: :sort_order, default_value: :asc
   resolve &ElixirBlogWeb.UsersResolver.all_users/3
  end
end
用户\u解析器.ex

alias Elixir.Account

def all_users(_root, args, _info) do
 users = Account.list_users(args)
 {:ok, users}
end
account.ex

def list_users(args) do
  args
  |> Enum.reduce(User, fn
    {:order, order}, query ->
    query |> order_by({^order, :first_name})
    {:filter, filter}, query ->
      query |> filter_with(filter)
    end)
  |> Repo.all
end

defp filter_with(query, filter) do
  Enum.reduce(filter, query, fn
    {:id, id}, query ->
      from q in query, where: q.id == ^id
    {:first_name, first_name}, query ->
      from q in query, where: ilike(q.first_name, ^"%#{first_name}%")
    {:last_name, last_name}, query ->
      from q in query, where: ilike(q.last_name, ^"%#{last_name}%")
    {:email, email}, query ->
      from q in query, where: ilike(q.email, ^"%#{email}%")
    {:inserted_before, date}, query ->
      from q in query, where: q.inserted_at <= ^date
    {:inserted_after, date},  query ->
      from q in query, where: q.inserted_at >= ^date
 end)
end

我在苦艾酒的文档中找不到关于
:naive_datetime
的东西

但是我们可以找到它[在苦艾酒的代码中]()

日期时间作为ISO8601格式的字符串出现在JSON响应中。


因此,我们可以使用datetime
“2018-05-13 00:00:07”

谢谢您的回答。因此,我们需要更改前端的输入日期,因为用户不会键入~N[2018-05-13 00:00:00]。我想知道是否还有其他方法@梅津優樹 不,您可以计算如何传输类型。好的。我更改了变量,
“insertedfter”:“~N[2018-05-13 00:00:00]”
它仍然给我
“消息”:“参数\“filter\”的值$filter无效。\N字段\“insertedfter\”:预期类型\“NaiveDateTime\”,找到\“~N[2018-05-13 00:00:00],
@梅津優樹
~N[2018-05-13 00:00:00]
是一个符号而不是字符串。请阅读我给出的url:P
~N[2018-05-13 00:00:00]
而不是
“~N[2018-05-13 00:00:00]”
  {:phoenix, "~> 1.3.2"},
  {:phoenix_ecto, "~> 3.2"},
  {:absinthe, "~> 1.4"},
  {:absinthe_plug, "~> 1.4"},
  {:absinthe_ecto, "~> 0.1.3"},