[英]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
傳遞給解析器並獲得結果嗎? 提前致謝。
解析器的 arguments是parent
、 args
、 context
和info
:
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.