我在一个新数据库上使用了prisma,并且正在旋转一个单独的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;
}
});
})
users()
函数只是针对mysql数据库(而不是pyramida服务器)的查询。这可以按预期工作,当涉及到嵌套资源时,我可以让所有用户受益匪浅
{
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);
}
}
);
});
};