您的 Vue.js 应用和 Cloud Functions for Firebase 是整个应用的完全不同的组件。
Vue.js 应用是一个前端组件(即使它托管在 Firebase Hosting 等云服务中)。
Cloud Functions 是无服务的后端组件,托管在 Firebase (Google Cloud) 基础架构中并对事件作出反应。
要让这两个组件相互交互,基本上有两种可能性:
- 对于 Callable Cloud Functions 和 HTTPS Cloud Functions,您将从 Vue.js 应用程序中调用它们。
- 对于后台触发的 Cloud Functions(例如,由 Firestore 事件触发,如创建文档),Vue.js 前端可以生成事件(例如,写入 Firestore)和/或侦听 Cloud Functions 执行的结果(例如修改了 Firestore 文档)。
如何将函数导入组件?
如上所述,您不能在 Vue.js 代码中集成 Cloud Function 代码。特别是您不能“将功能导入组件”。
我现在想在单击 a 时调用其中一个(.onCall() 函数)
组件中的按钮。
如果您的 Cloud Function 是 Callable 的,您可以按照documentation 中的说明通过 JS SDK 调用它。
更新您的评论:
如documentation 中所述,要从您的 Vue.js 应用程序调用可调用函数,您需要执行以下操作(使用 JS SDK v9):
将 Firebase 添加到您的 Vue.js 应用中。例如通过firebaseConfig.js 文件:
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getFunctions } from "firebase/functions";
const firebaseConfig = {
apiKey: "...",
// ....
};
const firebaseApp = initializeApp(firebaseConfig);
const db = getFirestore(firebaseApp);
const functions = getFunctions(firebaseApp);
export { db, functions };
然后,在你的组件中,你做
<script>
import { functions } from '../firebaseConfig';
import { httpsCallable } from 'firebase/functions';
// ...
methods: {
async callFunction() {
const addMessage = httpsCallable(functions, 'addMessage');
const result = await addMessage({ text: messageText })
const data = result.data;
//...
});
}
</script>