2016-11-17 73 views
3
枚舉值

假設我有這樣查詢用於GraphQL

class Order(models.Model): 
    STATES = [ 
     (1, 'Initiate'), 
     (2, "Brief"), 
     (3, "Planning"), 
     (4, "Price Negotiate"), 
     (5, "Executing"), 
     (6, "Pending"), 
     (7, "Completed"), 
     (8, "Canceled"), 
     (9, "Failed"), 
     (10, "Paid"), 
    ] 

    state = models.PositiveSmallIntegerField(
     choices=STATES, 
     default=1 
    ) 

模型當我配對這個模型與其石墨烯對象類型伴侶

class OrderNode(graphene_django.DjangoObjectType): 
    class Meta: 
     model = Order 
     interfaces = (relay.Node,) 

創建與名稱OrderState!的枚舉類型。

我所關心的

  1. 我如何可以查詢的枚舉
  2. 我如何管理枚舉與阿波羅客戶

反應的第一個問題,我有這個疑問

{ 
    customer(id: "Q3VzdG9tZXJOb2RlOjE=") { 
    name 
    orders { 
     edges { 
     node { 
      state 
     } 
     } 
    } 
    } 
} 

它給了我一個奇怪的狀態值,如A_1A_2。我期待它能給我一些有意義的價值,比如「Initiate」。我怎樣才能得到kv對enum的價值?

對於第二個問題,如果我想向用戶展示此枚舉的可能值的列表,我該怎麼做?

回答

4

我找到了一個解決方案,但我不知道它是否是最好的。除了具有枚舉值的查詢,我包括在此查詢

query { 
    # previous queries 
    __type(name: "OrderState") { 
     states: enumValues { 
      name 
      description 
     } 
    } 
} 

它拉了OrderState枚舉所有可能的鍵值對。然後我可以使用這個字典來查找枚舉值。

我覺得這種方法仍然過於人工,但沒有任何例子可以查詢枚舉值。他們停止描述枚舉是什麼,以及如何聲明枚舉。