Я начал проект, в котором при использовании node.js и express, и он подключен к mongodb, в этой базе данных есть три коллекции (участники, дома и действия), у одного участника может быть один дом и любые действия! Я уже выполнил запрос в graphql для каждого из них, но я не знаю, как я могу выполнить запрос и получить отношения между ними. Например, как я могу узнать, что участники находятся в определенном доме ...





Просмотрите документацию GraphQL.
Документация GraphQL обычно фокусируется на запросах, меньше на мутациях, меньше на определении схемы, еще меньше на настройке сервера и еще меньше на привязке сервера к реальной базе данных.
type participant{
_id: String
title: String
participantId:String
........
house : house
}
type house{
_id: String
title: String
houseId:String
........
activities : [activity]
}
type activity{
_id: String
name: String
content: String
post: Post
}
Это образец модели, вы можете разработать схему в соответствии с вашими требованиями.
Теперь вы можете попробовать такой запрос
query {
participants{
_id
title
}
house {
_id
houseId
comments {
_id
postId
content
}
}
}
Это пример формата запроса
Моя схема:
type Participant {
_id: ID!,
CodP: String!,
User: String!,
Birth: Date,
Country: String,
Email: String,
ApplyDate: Date,
LUG: String,
Status: String,
Control: String,
CodH: House,
CodA: [Activitie],
createAt: Date,
updateAt: Date,
}
type Activitie {
_id: ID!,
CodA: String,
Day: String,
StartTime: Date,
EndTime: Date,
Where: String,
Name: String,
Description: String,
}
type House {
_id: ID!,
CodH: String,
Name: String,
Onwer: String,
Address: String,
Local: String,
Contact1: String,
Contact2: String,
Contact3: String,
Email: String,
URL: URL,
CoordDD: String,
CoordDMS: String,
URLGoogleMaps: URL,
IMG: String,
Group: String,
ImgGoogleMaps: String,
I1: String,
Info: String,
I2: String,
N1: String,
I3: String,
N2: String,
I4: String,
N3: String,
I5: String,
N4: String,
I6: String,
N5: String,
I7: String,
N6: String,
I8: String,
N7: String,
I9: String,
N8: String,
I10: String,
N9: String,
I11: String,
Final: String
}
type Query {
getParticipant(_id: ID): Participant
getParticipantAll: [Participant]
getActivitie(_id: ID): Activitie
getActivitieAll: [Activitie]
getHouse(_id: ID): House
getHouseAll: [House]
getHouseCod(CodH: String): [House]
}
Но моя проблема в Resolver, простая, я могу это сделать, например:
import House from '../../models/House';
export default {
getHouse: (_, { _id }) => House.findById(_id),
getHouseCod: (_, { CodH }) => House.find({CodH}),
// createdAt vai permitir ordenar pela data de criação //
getHouseAll: () => House.find({}).sort({ createdAt: -1 }),
};
Моя первоначальная схема такова: