覆盖graphql / prisma解析器

时间:2019-02-23 17:29:43

标签: mysql graphql prisma prisma-graphql

我在一个新数据库上使用了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);
        }
      }
    );
  });
};

0 个答案:

没有答案