Использование объекта root в функции резольвера graphql для доступа к свойствам родительских полей - PullRequest
1 голос
/ 29 апреля 2020

Я использую библиотеку neo4j-graphql- js для автоматического создания резолверов из схемы. Для узла в схеме (Сотрудник) мне нужно получить определенное свойство узла (empid) из вызова rest, поскольку мы планируем удалить это свойство из нашей базы данных neo4j из-за проблем с конфиденциальностью. Я пытаюсь написать собственный распознаватель для этого поля. Я добавил директиву @ neo4j в это поле в схеме, чтобы neo4j игнорировал ее. Мне нужно сделать вызов rest, который принимает параметр с именем uid и возвращает coridponding empid. Этот iuid является свойством узла Employee и присутствует в моей базе данных neo4j. Проблема заключается в том, что при написании распознавателя объекты root содержат только те полевые значения, которые приняты в запросе. Поэтому, если iuid не является частью запроса, я не могу получить его значение в root obj. Вот мой рабочий узел: -

 type Employee{
 empId: String @neo4j_ignore
 buCode: String
 iuid: String
 name: String
 projectCode: String
 roleCode: String
 grade: String
 mailid: String
 duCode: String
 txtmailid_new: String

Вот мой распознаватель, где для меня я возвращаю фиктивную строку вместо вызова покоя: -

    
const resolvers={
   
    Employee: {
        empId: async (obj, params, ctx, resolveInfo) => {
            console.log(obj.iuid);
            var result="dummy_emp_id";
            return result;
        }
    }
};



const schema = makeAugmentedSchema({ typeDefs, resolvers} );
  
const server = new ApolloServer({ schema, context: { driver } });
server.listen(3003, '127.0.0.1').then(({ url }) => {
    console.log(`GraphQL API ready at ${url}`);
  });

Вот мой запрос: - {

Employee(first : 10)
{
    empId                                                          
    name


}

}

Я хочу получить доступ ко всем значение всего поля узла сотрудника, чтобы я мог получить iuid. Журнал консоли возвращает неопределенное значение, так как объект root имеет только запрашиваемое поле. Я не знаю, даже если это возможно, и если нет, то есть ли какое-нибудь решение этой проблемы?

...