簡體   English   中英

Apollo / GraphQL具有相同參數的相同查詢

[英]Apollo / GraphQL Same Query with Different Parameters

我將如何處理具有不同參數的Apollo查詢。 假設我的應用程序具有用戶概念,我希望我的API能夠通過ID或用戶名找到用戶。

看來我無法做到這一點

type Query {
  user(id: ID!): User
  user(username: String!): User
}

我必須訴諸於這樣的事情嗎

type Query {
  userById(id: ID!): User
  userByUsername(username: String!): User
}

我相信您的第二個選擇是最好的,但是您可以這樣做。

type Query {
  user(id: ID, username: String): User
}

如果不需要參數,那么您的解析器可以使用一些邏輯來確定是否應基於id或用戶名來吸引用戶。

if (args.id) {
  return getUserById(args.id)
} else {
  return getUserByUsername(args.username)
}

但是,由於本次演講中提到的原因https://youtu.be/pJamhW2xPYw?t=750 (可能會在12:30左右看到),我相信您的第二個選擇是更好的設計選擇。 希望有幫助!

使用ID和username作為字段創建一個新的輸入類型,並將其指定為參數。

type Query {
  getUser(filters:UserFilter): User
}

input UserFilter{
    ID : Int,
    Username : String
}

查詢應如下所示:

Query{
 getUser(filters:{ID:123123})
}

或用於用戶名過濾器

Query{
 getUser(filters:{Username:"Tom"})
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM