簡體   English   中英

Apollo GraphQL - 未觸發解析器

[英]Apollo GraphQL - resolver not being triggered

我是 GraphQL 的新手。 我從 Javascript Apollo 庫開始,但無法觸發解析器。 我很難判斷何時應該調用解析器,以及應該放置什么鍵。

這是我的架構和解析器:

// The GraphQL schema in string form
const typeDefs = `
  type Query { user(id: ID!): User, posts: Post }
  type User  { id: ID!, created: Int, username: String, bio: String, status: String, avatar: String, posts: [Post] }
  type Post { id: ID!, created: Int, user_id: Int, text: String, object_set_id: Int, edited: Int, views: Int, upvotes: Int, downvotes: Int, Parent: Int }
`;

// The resolvers
const resolvers = {
    Query: {
        user: (parent, args, context, info) => {
            return users.find(user => user.id === Number(args.id));
        },
        // posts: () => posts,
    },
    Post: {
        id: (parent, args, context, info) => {
            console.log(posts.filter(post => post.user_id === Number(parent.id)))
            return posts.filter(post => post.user_id === Number(parent.id))
        }
    }
};

我想通過用戶 ID 指定用戶,然后過濾以獲取用戶發布的所有帖子(最終使用時間過濾器)。

我嘗試了幾件事,但是用戶下的“帖子”總是顯示為“空”。 我錯過了什么? 謝謝。

用戶(或更多語義:userById)查詢

您的第一個查詢工作正常 您還應該添加一些data (否則您會收到錯誤"message": "users is not defined", )。

在此處輸入圖片說明

執行查詢:

query{
  user(id: 1){
    id
    username
  }
}

基本代碼示例:

const { ApolloServer, gql } = require("apollo-server");

const users = [
  {
    id: 1,
    username: "Kate Chopin"
  },
  {
    id: 2,
    username: "Paul Auster"
  }
];

// The GraphQL schema in string form
const typeDefs = gql`
  type Query {
    userById(id: ID!): User
  }
  type User {
    id: ID!
    username: String
  }
`;

// The resolvers
const resolvers = {
  Query: {
    userById: (parent, args, context, info) => {
      return users.find((user) => user.id === Number(args.id));
    }
  }
};

const server = new ApolloServer({
  typeDefs,
  resolvers
});

server.listen().then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

帖子查詢(或更多語義: postById ):

關於posts - 您的查詢是posts並且沒有解析器匹配 + 看起來您對他們做了一點“沙拉”。

最好遵循這個例子(同樣的想法只有書籍/作者而不是帖子/用戶): https : //www.apollographql.com/docs/apollo-server/getting-started/

接下來,閱讀這個解析器鏈https : //www.apollographql.com/docs/apollo-server/data/resolvers/#resolver-chains

再次hello world例子


const posts = [
  {
    id: 1,
    name: "Article One"
  },
  {
    id: 2,
    name: "Article Two"
  }
];

const users = [
  {
    id: 1,
    username: "Kate Chopin",
    posts: posts
  },
  {
    id: 2,
    username: "Paul Auster"
  }
];

// The GraphQL schema in string form
const typeDefs = gql`
  type Query {
    userById(id: ID!): User
  }
  type User {
    id: ID!
    username: String
    posts: [Post]
  }
  type Post {
    id: ID!
    name: String
  }
`;

// The resolvers
const resolvers = {
  Query: {
    userById: (parent, args, context, info) => {
      return users.find((user) => user.id === Number(args.id));
    }
  }
};

const server = new ApolloServer({
  typeDefs,
  resolvers
});

server.listen().then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

詢問: 在此處輸入圖片說明

暫無
暫無

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

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