簡體   English   中英

GraphQL-“類型為“查詢”的字段“allNews”上的“未知參數“國家/地區”。”,

[英]GraphQL-"Unknown argument \"country\" on field \"allNews\" of type \"Query\".",

GraphQL 新手在這里。 所以我試圖使用石墨烯在 Django 中編寫一個模式,它將國家參數作為字符串和時間參數作為字符。 查詢與“時間”參數一起工作正常,但每當我添加“國家”參數時。 它在"Unknown argument \\"country\\" on field \\"allNews\\" of type \\"Query\\".",引發以下錯誤"Unknown argument \\"country\\" on field \\"allNews\\" of type \\"Query\\".", 這是我的架構和類型:

類型:

class NewsType(DjangoObjectType):
    class Meta:
        model = News
        fields = ('id', 'site_name', 'title', 'link', 'content', 'thumbnail', 'status', 'upvote', 'downvote', 'published_date',
                  'paper', 'created_date')
        filter_fields = ['site_name', 'status', 'country']
        interfaces = (CustomNewsNode, )

    vote_status = DjangoFilterConnectionField(UserVoteNewsType)
    def resolve_vote_status(self, info, user_id):

        return self.uservotenews_set.filter(user_id=user_id)

架構:

    class NewsTypeFilter(django_filters.FilterSet):
        class Meta:
            model = News
            fields = ['id', 'site_name', 'title', 'link', 'content', 'thumbnail', 'status', 'upvote', 'downvote', 'published_date',
                      'paper', 'created_date']

class Query(graphene.ObjectType):
    all_news = DjangoFilterConnectionField(
        NewsType,  filterset_class=NewsTypeFilter, time=graphene.String())
     def resolve_all_news(self, info, **kwargs):
        print(kwargs['country'])
        env = environ.Env()
        environ.Env.read_env()
        HOURS_AFTER_NEWS_VISIBLE = env('HOURS_AFTER_NEWS_VISIBLE')
        timeDiff = datetime.now() - timedelta(hours=int(HOURS_AFTER_NEWS_VISIBLE))

        if kwargs['time']:  # if user clicks on sort by button
            if(kwargs['time'] == 'd'):
                time = 1
            elif (kwargs['time'] == 'w'):
                time = 7
            elif (kwargs['time'] == 'm'):
                time = 30
            elif (kwargs['time'] == 'y'):
                time = 365
            else:
                time = 1000
            end_of_give_time_period = datetime.now(
            ) - timedelta(days=int(HOURS_AFTER_NEWS_VISIBLE))
            start_of_given_time_period = end_of_give_time_period - \
                timedelta(days=time)
            allNews = News.objects.order_by('created_date').filter(status=True,
                                                                   created_date__lte=end_of_give_time_period, created_date__gte=start_of_given_time_period).order_by('-upvote')
        else:
            allNews = News.objects.order_by(
                '-created_date').filter(status=True).filter(created_date__lte=timeDiff)

        if 'country' in kwargs:
            countryId = Country.objects.filter(
                name=kwargs['country'][0]).values_list('pk', flat=True)
            allNews = allNews.filter(country__in=[countryId[0]])

        return allNews

但是每當我輸入查詢時,它都會返回以下錯誤:

詢問:

query{
  allNews (time :"w", country: "Bangladesh") {
    edges{
      node{
        title
        upvote
        createdDate
      }
}
  }

}

輸出:

{
  "errors": [
    {
      "message": "Unknown argument \"country\" on field \"allNews\" of type \"Query\".",
      "locations": [
        {
          "line": 2,
          "column": 23
        }
      ]
    }
  ]
}

首先,我從我的架構中去NewsTypeFilter ,因為它返回的與我的NewsType相同。 然后我在NewsType上添加了country和其他字段。 這幾乎解決了問題。

我猜首先添加 filterType 造成了問題。

暫無
暫無

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

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