Próbuję użyć utworzonej przez siebie funkcji. Więc w moim kliencie robię to:

const functions = firebase.app().functions("europe-west1");

        functions.httpsCallable('getSelf').then(res => {
            console.log(res);
            //stuff
        }).catch(e => {
            console.log(e);
            switch (e.code) {
                //stuff
            }
        })

Iw zasadzie otrzymuję błąd, że functions.httpsCallable(...).then is not a function. Naprawdę tego nie rozumiem i nie znajduję żadnej dokumentacji, jak wywołać funkcję na kliencie w innej wersji.

To jest moja strona serwera


// Gets things like adminlevel, profilepic etc
exports.getSelf = functions.region("europe-west1").https.onCall((data, context) => {
  // Checking that the user is authenticated.
  if (!context.auth) 
    // Throwing an HttpsError so that the client gets the error details.
    throw new functions.https.HttpsError('unauthorized', 'The function must be called ' +
        'while authenticated.');

  return db.collection("userInformation").doc(context.auth.uid).then(user => {
    if(!user)
      new functions.https.HttpsError('not-found', 'The user was not found');
    //returns needing values
    return {
      profilePicture: user.profilePicture,
      adminLevel: user.adminLevel,
      stripeAccountId: user.stripeAccountId,
      stripeCustomerId: user.stripeCustomerId,
      type: user.type
    }
  })
});
1
Lukas Germerott 8 styczeń 2020, 20:04

1 odpowiedź

Najlepsza odpowiedź

Sam HttpsCallable jest funkcją, którą można wywołać z parametrami, musisz tam dodać kolejny ():

const getSelf = functions.httpsCallable('getSelf');
getSelf({}).then(...);
3
Michael Bleigh 8 styczeń 2020, 17:08