Я пытаюсь добиться простого отображения из типа БД в упрощенную модель, которая обслуживается клиентами, и мне не хватает чего-то фундаментального.
Моя графовая схема выглядит следующим образом, и все, чего я хочу добиться, - это изменить список объектов для их подсчета;
type UserModel {
id: ID!
postCount: Int!
}
type LoginResponse {
token: String!
user: UserModel
}
type Mutation {
login(input: LoginInput!): LoginResponse!
}
И призматическая модель БД выглядит следующим образом:
type User {
id: ID! @id
posts: [Post!]!
}
Для обеспечения безопасности типов я использую graphqlgen для генерации типов резольвера. Проблема в том, что я вынужден иметь дело с отображением в распознавателе мутаций в логине вместо распознавателя UserModel, где я хотел бы (и ожидал) этот лог c. Тем более, что мне придется делать это везде, где фигурирует UserModel.
Это то, чего я хотел бы достичь. Буду признателен за любые подсказки или предложения, которые могут мне помочь.
export const login: MutationResolvers.LoginResolver = async (_, { input }, { db }) => {
const user = await db.user({ email: input.email })
return {
token: '',
user: user, //ERROR - user doesn't have postCount property
}
}
export const UserModel: UserModelResolvers.Type = {
...UserModelResolvers.defaultResolvers,
postCount: ({ id }, _ , { db }) => {
return db.postsConnection({where: {author: {id: id}}}).aggregate().count();
},
};