Функция Firebase показывает ошибку при открытии URL функции Firebase - PullRequest
0 голосов
/ 02 мая 2019

Итак, у меня есть сценарий, когда при открытии URL-адреса функции firebase - https://us -central1-geochatterthing.cloudfunctions.net / getWall

Я получаю следующую ошибку:

{"error": {"status": "INVALID_ARGUMENT", "message": "Bad Request"}}

Кроме того, мои функции getWall в облачных функциях выглядят как на картинке ниже.

enter image description here

А ниже ссылка на файл api-http.js:

https://gist.github.com/shubham6996/53cea6696b6d565b7f1ffce53bdaabf4

ОБНОВЛЕННЫЙ ВОПРОС:

Эта функция вызывается из моего собственного React-приложения с использованием приведенного ниже кода:

const wallFunc = firebase.functions().httpsCallable('getWall');

let result = await wallFunc({size: 15});

И когда я проверяю вывод result, используя следующий код:

console.log("Show result = "+JSON.stringify(result, this.getCircularReplacer()));

 getCircularReplacer = () => {
        const seen = new WeakSet();
        return (key, value) => {
          if (typeof value === "object" && value !== null) {
            if (seen.has(value)) {
              return;
            }
            seen.add(value);
          }
          return value;
        };
    };

И приведенный выше код показывает мне вывод ниже в консоли:

Показать результат = { "данных": { "документы": [{ "сорт": [1530702073924], "идентификатор": "04dhcfzDZbNLZoekfhl3"}], "хиты": 1}}

Здесь "id": 04dhcfzDZbNLZoekfhl3 - это идентификатор документа, извлеченного из коллекции базы данных Firebase. Но я хочу иметь возможность извлекать данные каждого документа из этой коллекции вместо одного документа.

Кроме того, в начале я упомянул ошибку «status»: «INVALID_ARGUMENT», я нашел кое-что к этой ошибке:

Если триггер клиента вызван, но запрос неверен формат, например, не являющийся JSON, имеющий недопустимые поля или пропущенный поле данных, запрос отклоняется с помощью 400 Bad Request, с код ошибки INVALID_ARGUMENT.

источник: https://firebase.google.com/docs/functions/callable-reference

И в моем приложении, когда я вызываю вызываемую функцию, используя

const wallFunc = firebase.functions().httpsCallable('getWall');

let result = await wallFunc({size: 15});

Я передаю здесь размер в качестве параметра, но я не знаю, пропустил ли я что-то здесь или нет.

А в файле api-http.js в этом файле в строке 36 показано, что данные имеют размер 2 объектов, а я передаю только параметр размера.

P.S. - Я могу ошибаться, объясняя свою проблему здесь, потому что я на самом деле перепроектирую это приложение. Так что я смущен правильным подходом здесь.

1 Ответ

1 голос
/ 02 мая 2019

Видимо, вы путаете Функции вызываемого облака и Функции облака HTTP .

Когда вы вызываете облачную функцию напрямую через URL (https://us -central1-geochatterthing.cloudfunctions.net / getWall ), это означает, что эта облачная функция является HTTP-функцией.

Но из кода функции облака (_firebase.functions.https.onCall()) кажется, что он вызывается.

Поэтому вы должны называть его так, как оно вызывается из вашего приложения React Native (см. Код в вашем вопросе), а не через URL. Смотрите также этот конкретный раздел документации: https://firebase.google.com/docs/functions/callable#call_the_function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...