Answer the question
In order to leave comments, you need to log in
How to separate graphql resolvers in node.js?
Здравствуйте уважаемые разработчики!
Я сейчас осваиваю node.js и в том числе graphql для работы с mongodb.
Собственно дошел я до такой задачи, что мне нужно разделить все resolver'ы, чтобы они были в отдельных файлах, как: ./queries/...... - файлы запросов к ДБ
и ./mutations/...... - файлы изменений в БД
ну и по аналогии еще подписки(хотя пока их нет).
И так мой код где у меня сейчас хранятся все резолверы:
import helloWorld from './queries/helloWorld'; //для проверки выноса запроса в сторонний файл
const { User } = require('../models/abracode');
export default {
Query: {
helloWorld, //всё работает!
// eslint-disable-next-line no-return-await
getUsers: async () => await User.find({}).exec()
},
Mutation: {
addUser: async (_, args) => {
try {
const response = await User.create(args);
return response;
} catch(e) {
return e.massage;
}
},
removeUser: async (_, args) => {
try {
await User.remove(args);
return 'OK!';
} catch(e) {
return 'catch';
}
}
}
};
type Users {
id: ID!
firstName: String,
lastName: String
}
type Query {
helloWorld: String
getUsers: [Users]
}
type Mutation {
addUser(firstName: String!, lastName: String!): Users
removeUser(firstName: String!, lastName: String!): Users
}
export default () => 'hello world!!!!';
Answer the question
In order to leave comments, you need to log in
Немного непонятна ваша проблема. Если вы уже вынесли helloWorld в отдельный файл, и всё работает, то какие проблемы с остальными файлами?
Выносите их точно так же:
// файл queries/getUsers.js
import { User } from '../../models/abracode';
export default async () => await User.find({}).exec();
// файл с инициализацией схемы
import getUsers from '../queries/getUsers';
export default {
Query: {
helloWorld, //всё работает!
getUsers,
},
...
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question