У меня есть следующая модель данных в prisma.
type User {
id: ID! @unique
name: String!
email: String! @unique
password: String!
...etc
userTypeA: UserTypeA @relation(name: "UserOnUserTypeA")
userTypeB: UserTypeB @relation(name: "UserOnUserTypeB")
}
type UserTypeA {
id: ID! @unique
user: User @relation(name: "UserOnUserTypeA")
userTypeB: [userTypeB!]!
}
type UserTypeB {
id: ID! @unique
user: User @relation(name: "UserOnUserTypeB")
userTypeA: UserTypeA!
...etc
}
У меня также есть 2 распознавателя, один для регистрации, который возвращает только UserTypeA, а другой для входа в систему, который возвращает любого пользователя.
async register(parent, args, ctx, info) {
args.email = args.email.toLowerCase();
const password = await bcrypt.hash(args.password, 10);
const user = await ctx.db.mutation.createUser(
{
data: {
...args,
password
}
},
info
);
const userTypeA = await ctx.db.mutation.createUserTypeA(
{
data: {
user: {
connect: {
id: user.id
}
}
}
},
info
);
const token = jwt.sign({ userId: userTypeA.id }, process.env.APP_SECRET);
ctx.response.cookie("token", token, {
httpOnly: true,
maxAge: 1000 * 60 * 60 * 24 * 365
});
return userTypeA;
},
async login(parent, { email, password }, ctx, info) {
const user = await ctx.db.query.user({ where: { email: email } });
if (!user) {
throw new Error("No user found");
}
const valid = await bcrypt.compare(password, user.password);
if (!valid) {
throw new Error("Invalid Password!");
}
const token = jwt.sign({ userId: user.id }, process.env.APP_SECRET);
ctx.response.cookie("token", token, {
httpOnly: true,
maxAge: 1000 * 60 * 60 * 24 * 365
});
return user;
},
Мутация регистра правильно возвращает UserTypeA, и я могу найти вложенную информацию из модели пользователя. Однако, когда я использую мутацию входа в систему, я получаю информацию о пользователе, но вложенный UserTypeA имеет значение null.
В руководстве Веса Боса Расширенный ответ, где он создает приложение полного стека с помощью React и GraphQL/Prisma (интернет-магазин), он использует те же преобразователи и получает вложенную информацию о пользователе (например, элементы корзины), которые определены в модели. как отношения.
PS. Имейте в виду, что я новичок в GraphQL/Prisma. Спасибо!


Я думаю, вам нужно написать преобразователи запросов для UserTypeA и UserTypeB.