1
如何從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();
}
}
}
});
resolve(job,args,context,info){ return companyCollection.findOne({_id:job.companyId}); } 這裏你沒有使用rootValue作爲解析函數中的一個參數。什麼是rootValue? – chyangba
我剛剛將rootValue變量重命名爲job,這就是它的原因。我在答案結尾處發佈的鏈接解釋了根值的來源。 – helfer