Estoy tratando de llamar a estas funciones de nube de firebase desde mi aplicación Vue
exports.sayHi = functions.https.onCall((data, context) =>{ return "hi"; });
Esta es mi acción en la tienda.
import { getFirebaseDB, getFirebaseFunctions, } from "../../helpers/firebase/authUtils"; reserveApt() { getFirebaseFunctions() .httpsCallable("sayHi") .then((result) => { console.log(result); }); },
y estas son mis funciones auxiliares en ../../helpers/firebase/authUtils:
import firebase from "firebase/app"; import "firebase/auth"; import "firebase/firestore"; import "firebase/functions"; /** * Initilize the backend * @param {*} config */ const initFirebaseBackend = (config) => { if (!_fireBaseBackend) { _fireBaseBackend = new FirebaseAuthBackend(config); _db = firebase.firestore(); _functions = firebase.functions(); } return _fireBaseBackend; }; /** * Returns the firebase backend */ const getFirebaseBackend = () => { return _fireBaseBackend; }; /** * returns firestore db */ const getFirebaseDB = () => { if (!_db) { _db = firebase.firestore(); } return _db; }; /** * returns firebase functions */ const getFirebaseFunctions = () => { if (!_functions) { _functions = firebase.functions(); } return _functions; }; export { initFirebaseBackend, getFirebaseBackend, getFirebaseDB, getFirebaseFunctions, };
Firebase se inicializó correctamente y todas las demás funciones, como auth y firestore, funcionan perfectamente, pero cuando llamo a esto, aparece este error:
[Vue warn]: Error in v-on handler: "TypeError: Object(...)(...).httpsCallable(...).then is not a function" found in ---> <Properties> at src/views/pages/property/properties.vue <App> at src/App.vue <Root>
Así que aparentemente el problema estaba en llamar a la función. Tuve que llamarlo así:
var reserve = getFirebaseFunctions().httpsCallable("sayHi"); reserve().then((result) => { console.log(result); });
pero no estoy seguro de por qué!!