Это сводит меня с ума, просто потому, что я не могу найти достаточно ошибок, чтобы отследить их.Google тоже не сильно помог.
В двух словах, я пытался изучить схему сшивания, используя этот пример , и с полки все работает отлично.Затем я попытался заменить жестко закодированные данные для моих собственных «реальных» данных (коллекции NoSQL, хранящиеся в mLab), и я могу нормально запросить каждый API через API шлюза, но только по отдельности.В тот момент, когда я пытаюсь их прошить, я получаю Cannot read property 'args' of undefined
.Трассировка минимального стека говорит, что в моих средствах распознавания фрагментов происходит ошибка info.mergeInfo.delegateToSchema
, но я даже не могу сделать console.log
, который не помогает.
Я использую Mongoose для моей модели / схемы (которая отлично работает, когда я не пытаюсь объединить их, поэтому я не думаю, что это так).
Мой фрагмент Post.user:
export default schema => ({
user: {
fragment: `fragment PostFragment on Post { authorId }`,
resolve(parent, args, context, info) {
const id = parseInt(parent.user);
return info.mergeInfo.delegateToSchema({
schema,
operation: 'query',
fieldName: 'authorId',
args: {
id
},
context,
info
});
}
}
});
Мой главный post.js
resolver:
// ...
const resolvers = {
Query: {
allPosts: async () => {
const posts = await Post.find(); // works by itself
return posts;
},
post: async (parent, { id }) => {
const post = await Post.findById(id); // works by itself
return post;
}
}
};
export default resolvers;
Мои отношенияSchema:
const relationsSchema = `
extend type User {
posts: [Post]
}
extend type Post {
author: User
}
`;
export default relationsSchema;
И схема слияния:
import { mergeSchemas } from 'graphql-tools';
import makeResolvers from '../resolver';
import makePostSchema from '../remoteSchema/post';
import makeUserSchema from '../remoteSchema/user';
import relationsSchema from './relations';
// use schema stitching technique to merge schems together
export default async () => {
const postSchema = await makePostSchema();
const userSchema = await makeUserSchema();
const resolvers = makeResolvers({ postSchema, userSchema });
return mergeSchemas({
schemas: [postSchema, userSchema, relationsSchema],
resolvers
});
};
Я буду рад поделиться еще кодом, если вам это нужно.Заранее спасибо !!