Я хочу создать соединение GraphQL между Пользователь <> Роль <> Role_Type и, наконец, получить тип роли пользователя обратно с запросом. Ниже приведено только несколько важных строк кода:
type Query {
getUsers: [User]
}
type User {
_id: ID
firstname: String
roles: [Role]
}
type Role {
_id: ID
role_type_id: ID
role_types: [Role_Type]
user_id: ID
}
type Role_Type {
_id: ID
name: String
}
и в резольвере пользователя у меня есть:
Query: {
getUser: async (root, { _id }) => {
return prepare(await DBUsers.findOne(ObjectId(_id)))
}
},
User: {
roles: async ({_id}) => {
return (await MongoDBRoles.find({user_id: _id}).toArray()).map(prepare)
}
}
, а для распознавателя ролей:
Role: {
role_types: async ({_id}) => {
return (await MongoDBRoleTypes.find({role_type_id: _id}).toArray()).map(prepare)
},
},
Когда я запрашиваю сейчас:
{
getUser(_id: "5d555adcd2c22a242863f7a1") {
firstname
roles {
_id
role_type_id
user_id
role_types {
name
}
}
}
}
, я получаю:
{
"data": {
"getUser": {
"firstname": "Gregor",
"roles": [
{
"_id": "5d90cf352f50882ab0ce3877",
"role_type_id": "5d90ce48b7893d19bcc328f9",
"user_id": "5d555adcd2c22a242863f7a1",
"role_types": []
}
]
}
}
}
Но почему role_types
пусто. Как видите, role_type_id
заполнено. Так почему нет связи.
Когда я смотрю в MongoDB, я вижу тип роли пользователя.
Если вам нужно больше Schema / Resolver, дайте мне знать.