Как я могу вернуть данные из нескольких коллекций из Graphql?Как я могу вернуть данные из нескольких коллекций из Graphql?
const jobsCollection = db.collection('jobs');
const companysCollection = db.collection('company');
import {
GraphQLList,
GraphQLObjectType,
GraphQLSchema,
GraphQLString,
GraphQLInt,
GraphQLFloat,
GraphQLEnumType,
GraphQLNonNull
} from 'graphql';
const Company = new GraphQLObjectType({
name: 'Company Name',
description: 'test',
fields:() => ({
_id: {type: GraphQLString},
name: {type: GraphQLString},
address : {type: GraphQLString}
}
})
});
В рамках нижеуказанного запроса я хочу также запросить коллекцию компании. Как я могу это сделать?
const Job = new GraphQLObjectType({
name: 'job',
description: 'test',
fields:() => ({
_id: {type: GraphQLString},
name: {type: GraphQLString},
skill_set : {type: GraphQLString},
company: {type: Company}
}
})
});
## В рамках нижеследующего запроса я хочу также запросить коллекцию компаний. Как я могу это сделать? ##
const Query = new GraphQLObjectType({
name: "Queries",
fields: {
jobs: {
type: new GraphQLList(Job),
resolve: function(rootValue, args, info) {
let fields = {};
let fieldASTs = info.fieldASTs;
fieldASTs[0].selectionSet.selections.map(function(selection) {
fields[selection.name.value] = 1;
});
return jobsCollection.find({}, fields).toArray();
}
}
}
});
Решение (задание, args, context, info) { return companyCollection.findOne ({_id: job.companyId}); } Здесь вы не использовали rootValue в качестве аргумента в функции разрешения. Что такое rootValue ??? – chyangba
Я просто переименовал переменную rootValue в задание, что и есть. Ссылка, которую я опубликовал в конце моего ответа, объясняет, откуда взялось корневое значение. – helfer