Как отладить мой действительно медленный преобразователь, подключенный к базе данных Firebase в реальном времени?

#firebase #firebase-realtime-database #graphql #apollo-server

#firebase #firebase-realtime-database #graphql #apollo-сервер

Вопрос:

У меня есть сервер graphql, подключенный к моему Firebase RTD и развернутый на heroku.

Когда я запускаю свой сервер в heroku, запрос к reservations распознавателю занимает целую вечность, и в конечном итоге игровая площадка кричит Unexpected token < in JSON at position 0

Я подозреваю, что это тайм-аут от Firebase, но как мне приступить к отладке этого? (Heroku ничего не регистрирует об ошибке).

Вы можете попробовать сервер для себя: https://filex-database.herokuapp.com

Конкретный запрос, который вызывает у меня проблемы, это:

 query {
  reservations {
    code
    name
  }
}
  
 const db = require("../datasources/db");
const masterlist = require("../datasources/masterlist.js");
const getById = (key: string, id: string) =>
  db[key].filter((item) => item.id === id)[0];

const firebaseQuery = (context: { firebaseClient }, endpoint: string) => {
  const finalEndpoint =
    endpoint.charAt(0) === "/" ? endpoint : "/".concat(endpoint);
  const baseUrl = "/workshops";
  return context.firebaseClient
    .database()
    .ref(`${baseUrl}${finalEndpoint}`)
    .once("value")
    .then((snapshot) => snapshot.val());
};

const Query = {
  workshops: () => db.workshops,
  workshop: (_, args) => getById("workshops", args.id),
  options: () => db.options,
  option: (_, args) => getById("options", args.id),

 // this resolver is causing me trouble
  reservations: async (_, __, context) => {
    const data = await firebaseQuery(context, "/applicants");
    return Object.values(data);
  },
  reservation: async (_, args, context) => {
    const data = await firebaseQuery(context, `/applicants/${args.id}`);
    return data;
  },
};

module.exports = { Query };

  

РЕДАКТИРОВАТЬ: я создал еще один простой сервер, используя ту же технологию и предоставляя только этот распознаватель, а также тайм-аут (хотя локально все работает нормально)

http://apollo-testing-gonzo.herokuapp.com