【发布时间】:2021-07-17 04:24:23
【问题描述】:
我对 Absinthe 的这种行为感到困惑。
对于顶级字段,例如
field :projects, list_of(:project) do
arg :user_id, :string
resolve(&ProjectResolver.list_projects/2)
end
如果ProjectResolver.list_projects/2返回{:ok, []},那么JSON结果会正确
{
"data": {
"projects": []
}
}
但是,对于子字段,例如
中的tags 字段
object :task do
field :id, :string
# ... Other fields
field :tags, list_of(:tag) do
resolve(&TaskResolver.list_tags/3)
end
# ... Other subfields
end
如果TaskResolver.list_tags/3 返回{:ok, []},我得到
{
"data": {
"task": {
"id": "ba156cde-8c5f-4806-b161-62071b0098b3",
"tags": [
null
]
}
}
}
而不是
{
"data": {
"task": {
"id": "ba156cde-8c5f-4806-b161-62071b0098b3",
"tags": []
}
}
}
我认为应该是合理的回应。
现在包含一项 (null) 的非空数组在前端 (apollo) 上让我头疼,我不确定是否有任何方法可以轻松解决这个问题。如果返回的数据首先是一个空数组,那将是理想的,我不明白为什么不是。
【问题讨论】:
标签: graphql elixir apollo vue-apollo absinthe