Reputation: 11661
I'm using graphql with graphql-compose-mongoose.
How to get the users object instend of array of ids?
I have try to do with a lot of different queries but nothing works.
Here is my query to get doc one with categories and users object:
{
docOne {
name,
categories {
name
_id
users
}
}
}
Give me array of ids. I expect to array of user objects.
{
"data": {
"docOne": {
"name": "main",
"categories": [
{
"name": "Category1",
"_id": "5ca37e1d219190011742473",
"users": [
"5c6c0213f081954bd7d4a38c",
"5c6c02948e8191a16529a1a1",
"5c6c02ee7e81912075850119"
]
},
{
"name": "Category2",
"_id": "5cae46e1100250001222f9a",
"users": [
"5c6c02948e0081a16529a1a1",
"5c8e2346ac7819d0e75ebac6",
"5c8e2a49432819ebd73b5fc2",
]
},
]
}
}
}
Here how I defiend the structure:
import mongoose, { Document, Schema } from 'mongoose';
import composeWithMongoose from 'graphql-compose-mongoose';
import { GraphQLNonNull, GraphQLList } from 'graphql';
const UserSchema = new Schema({
name: { type: String }
});
const DocSchema = new Schema({
name: { type: String },
categories: [
{
name: { type: String },
users: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
},
],
});
export const User = mongoose.model<IMongooseUser>('User', UserSchema);
export const Doc = mongoose.model<IMongooseUser>('Doc', UserSchema);
const UserTC = composeWithMongoose(User);
const DocTC = composeWithMongoose(Doc);
const USER_QUERIES = {
userById: UserTC.getResolver('findById'),
userByIds: UserTC.getResolver('findByIds'),
userOne: UserTC.getResolver('findOne'),
userMany: UserTC.getResolver('findMany'),
userCount: UserTC.getResolver('count'),
userConnection: UserTC.getResolver('connection'),
userPagination: UserTC.getResolver('pagination'),
};
const DOC_QUERIES = {
docById: DocTC.getResolver('findById'),
docByIds: DocTC.getResolver('findByIds'),
docOne: DocTC.getResolver('findOne'),
docMany: DocTC.getResolver('findMany'),
docCount: DocTC.getResolver('count'),
docConnection: DocTC.getResolver('connection'),
docPagination: DocTC.getResolver('pagination'),
};
schemaComposer.Query.addFields({
...USER_QUERIES,
...DOC_QUERIES
});
const graphqlSchema = schemaComposer.buildSchema();
export default graphqlSchema;
Upvotes: 2
Views: 275