graphql-compose / graphql-compose/graphql-compose-mongoose

How to get related schema in graphql query?

Open
#176 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
706
Forks
98
PR merge metrics
No merged PRs in 30d

Description

I have Doc and User schema.
How to get Doc query with User included (not just id, but the all user properties)?

For example I call to get all doc from the db. but I get in users only the id.

```
{
docOne {
name,
categories {
name
_id
users
}
}
}
```
But the results are string ids and not the user object(s):
```
{
"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('User', UserSchema);
export const Doc = mongoose.model('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;
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.