是否可以使用 'firebase-admin' 包调用 firebase 函数?

Is it possible to call firebase functions with 'firebase-admin' package?

我的节点应用程序具有基于服务帐户的访问权限,因此我使用了 firebase-admin。正如我之前看到的,firebase-admin 大部分是重复的 firebase 包(身份验证部分、签名和其他一些部分除外),但现在我想调用函数,但我找不到 firebase 的任何等效项=15=]。我研究了 Typescript 类型,他们甚至没有提到函数。

admin.initializeApp({
  credential: admin.credential.cert('./service-account-credentials.json'),
  databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
});

const config = {
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
};

const storageBucket = admin.storage().bucket(config.storageBucket);
const firestore = admin.firestore();



// const functions = admin.apps[0].functions(); // not possible
const functions = firebase.apps[0].functions(); // possible, but Firestore.apps not initialized

我有哪些选择?

在 Node.js Admin SDK for Firebase 中没有 firebase-functions client 调用 Callable Cloud Functions。

虽然这不是一个不合理的请求,所以我建议在 Github repo 上提交功能请求,以便其他人也可以权衡。

与此同时,唯一的选择是实施 wire protocol for callable Cloud Functions yourself, possibly based on their implementation on the regular JavaScript SDK

以这段代码结束。用户 id 是 firebase 用户 uid。

const firebaseApp = async (userId: string) => {
  if (firebase.apps?.length) {
    firebase.apps.forEach((app) => app.delete());
    console.log(`Deleted ${firebase.apps.length} apps`);
  }

  const customToken = await admin.auth().createCustomToken(userId);
  const firebaseApp = firebase.initializeApp(config);

  await firebaseApp.auth().signInWithCustomToken(customToken);

  return firebaseApp;
};
const firebase = await firebaseApp('WObPvJbZDIR9WB72Tun8Jg4D0ky2');

await firebase
  .functions('europe-west1')
  .httpsCallable('myFunction')(doc);