Перезапись резольвера graphql / prisma - PullRequest
0 голосов
/ 23 февраля 2019

Я использую призму в новой базе данных и раскручиваю отдельный сервер приложений 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);
        }
      }
    );
  });
};
...