Я использую призму в новой базе данных и раскручиваю отдельный сервер приложений graphql.Этот сервер graphql будет взаимодействовать как с новым сервером prisma, так и с существующими экземплярами базы данных mysql.Мне нужно иметь возможность получать данные из обеих этих баз данных, но у меня возникают некоторые проблемы, когда речь идет о вложенных запросах.
Сейчас у меня есть следующее преобразование:
export const Query = prismaObjectType("Query", t => {
t.field("users", "User", {
...t.prismaType.users,
resolve: async (parent, args, ctx) => {
const result: Array<any> = await users();
console.log("result", result);
return result;
}
});
})
The *Функция 1006 * - это просто запрос к базе данных mysql (а не к серверу призмы).Это работает, как и ожидалось, и я могу получить от всех пользователей исключение, когда дело доходит до вложенного ресурса
{
users{
id
first_name
last_name
email
address{
address_1
updatedAt
}
}
}
В этом запросе все пользовательские данные возвращаются, КРОМЕ для поля адреса.Адрес всегда нулевой, хотя в моем ответе указаны данные об адресе.Ниже приведено определение user()
.Может кто-нибудь сказать мне, как я могу получить поле адреса для заполнения в моем ответе?
function transform(user: any) {
return {
id: user.id,
first_name: user.first_name,
last_name: user.last_name,
email: user.email,
address: {
address_1: user.address_one,
address_2: user.return_address,
city: user.address_one_city,
state: user.address_one_state,
zip: user.return_address_zipcode,
createdAt: user.created,
updatedAt: user.modified
}
};
}
const users = () => {
return new Promise((resolve, reject) => {
connection.query(
"SELECT * FROM users",
(error: Error, results: Array<any>) => {
if (error) {
reject(error);
} else {
const users = results.map(transform);
resolve(users);
}
}
);
});
};