Облачные функции Firebase / Один работает, другой (та же функция) не работает - PullRequest
0 голосов
/ 13 апреля 2020

Я очень нервничаю .. Я не могу нормально протестировать облачные функции FireBase, потому что многие вещи не работают. Я проверил это, я скопировал ту же функцию с другим именем, новая функция не работает. Почему???? Почему работает helloworld и почему не работает tryhello ???

облачные функции nodejs index. js:

    const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

const db = admin.firestore();


exports.tryHello = functions.https.onCall((data, context) => {

        let dataexample = {
          name: 'examplename',
          state: 'examplestate',
          country: 'examplecountry'
        };
        let setDoc = db.collection('newexample').doc(data.text).set(dataexample);

        return { text : "success. uid:" + context.auth.uid }

});


exports.helloWorld = functions.https.onCall((data, context) => {

        let dataexample = {
          name: 'examplename',
          state: 'examplestate',
          country: 'examplecountry'
        };
        let setDoc = db.collection('newexample').doc(data.text).set(dataexample);

        return { text : "success. uid:" + context.auth.uid }

});

Unity C#:

    public void testbutton()
    {
        var data = new Dictionary<string, object>();
        data["text"] = "example";

 //I tested "tryHello" and helloWorld"

        FirebaseFunctions.DefaultInstance.GetHttpsCallable("tryHello")
.CallAsync(data).ContinueWith((task) =>
{
if (task.IsFaulted)
{
          // Handle the error...
          print("error");

}
else if (task.IsCompleted)
{
        IDictionary snapshot = (IDictionary)task.Result.Data;

        print("Result: " + snapshot["text"]);

    }
}

Результат:

1. Сначала я пишу Unity: GetHttpsCallable ("helloWorld") и сохраняю.

Я запускаю игру, авторизируюсь, затем нажимаю кнопку тестирования.

результат: firebase console: успешно создать коллекцию примеров, пример документа, страну: examplecountry, имя: examplename, состояние: examplestate. Хорошо, хорошо.

журнал единства:

1. Пользователь успешно вошел в систему: Jane Q. Пользователь (qQC3wEOU95eDFw8UuBjb0O1o20G2) UnityEngine.Debug: LogFormat (String, Object []) PerformWaitCallback ()

Облачные функции Журнал "helloWorld": Выполнение функции запущено Выполнение функции заняло 3020 мс, завершено с кодом состояния: 200

ОК. Я удаляю коллекцию "example" в консоли Firebase.

2. Во-вторых, я пишу Unity: GetHttpsCallable ("tryHello") и сохраняю.

Я запускаю игру, авторизируюсь, затем нажимаю кнопку тестирования.

Результат: не создать коллекцию.

журнал единства:

* 1. Пользователь успешно вошел в систему: пользователь Джейн В. (qQC3wEOU95eDFw8UuBjb0O1o20G2) UnityEngine.Debug: LogFormat (String, Object []) )

ошибка UnityEngine.MonoBehaviour: print (Object) <> c: b__16_0 (Task`1) (at Assets / loginfire.cs: 396) System.Threading._ThreadPoolWaitCallback: PerformWaitCallback () *

Облачные функции Журнал «tryHello»: ничего ...

Почему? Я не понимаю то же самое, только имя отличается!

И .. во многих случаях это показывает успех, но все еще не обновляет базу данных. или просто намного позже. Почему? В последнее время helloWorld также часто пишет об ошибке, если я не нажимаю кнопку тестирования сразу после входа в систему, он не может прочитать UID.

Я начинаю уставать от системы с самого начала .

Спасибо ..

1 Ответ

1 голос
/ 13 апреля 2020

Решено!

Мне нужно, чтобы оно было настроено для настройки разрешений в облачной консоли "tryHello". (Не те же настройки helloworld.)

В последнее время helloWorld также часто выдает ошибку, если я не нажимаю кнопку тестирования сразу после входа в систему, он не может прочитать uid.

-> Мне нужно было объявить Firebasauth в testbutton ().

Извините за вопрос, спасибо.

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