簡體   English   中英

Apollo graphql 查詢帶參數

[英]Apollo graphql query with parameters

我正在關注這個 Graphql 介紹https://www.apollographql.com/docs/apollo-server/getting-started/ 我已經設置好我的文件(稍作修改),並且基本查詢正在處理 http://localhost:4000/。

學完基礎后我的下一個問題是,如何根據參數獲取數據? 我已經做到了這一點,但是操場上的查詢沒有返回結果。

index.js

const typeDefs = gql`
    type Item {
        name: String
        description: String
        full_url: String
        term: String
    }

    type Query {
        items: [Item]
        itemsSearch(term: String!): [Item]
    }
`;

const resolvers = {
    Query: {
        // this works. it is the example from the guide.
        items: () => items,
        // this doesn't work. `term` is always undefined
        itemsSearch: term => {
            console.log('term', term);
            console.log('items', items);
            return items.filter(item => item.title.indexOf(term) > -1 || item.author.indexOf(term) > -1);
        },
    },
};

然后我在操場上運行這個查詢。 (主要從https://graphql.org/graphql-js/passing-arguments/工作)

{
  itemsSearch(term: "Rowling") {
    title
    author
  }
}

我得到了成功的響應,但沒有數據。 如前所述,itemsSearch 解析器中的日志記錄term打印未定義。

知道如何將該參數term傳遞給解析器並獲得結果嗎? 提前致謝。

解析器的 argumentsparentargscontextinfo

args

包含為此字段提供的所有 GraphQL arguments 的 object。

例如,執行query{ user(id: "4") }時,傳遞給用戶解析器的args object 是{ "id": "4" }

因此,您可以通過args獲得term

itemsSearch: (parent, { term }) => {
   ...
}

或者:

itemsSearch: (parent, args) => {
   const term = args.term;
   ...
}

暫無
暫無

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

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