Firebase - 在 NestJS 框架中处理云事件

Eli*_*hen 7 firebase google-cloud-functions nestjs

我使用NestJS作为我的后端框架和 Firebase。

将 Nest 与 Firebase 集成到 HTTP 请求上很简单,只需将 Nest 的快速实例附加到 Firebase:

const server: Express = express();

const bootstrap = async (expressInstance: Express) => {
  const app = await NestFactory.create(AppModule, expressInstance);
  await app.listen(3000);
  await app.init();
};

bootstrap(server);

exports.api = functions.https.onRequest(server);
Run Code Online (Sandbox Code Playgroud)

但是其他 Google 函数(例如 pubsub、firestore、auth 等)呢?

我正在构建一个订阅应用程序,我依赖于functions.pubsub在每天结束时检查我应该向哪些订阅收费。它需要编写我想用 NestJs 编写的业务逻辑。

我正在尝试实现这样的目标(简而言之):

functions.pubsub
    .topic('topic')
    .onPublish(app.getService(Service).method);
Run Code Online (Sandbox Code Playgroud)

Eli*_*hen 6

事实证明,我非常接近解决方案。而不是getService,我不得不使用get,像这样:

const bootstrap = async (expressInstance: Express) => {
  const app = await NestFactory.create(AppModule, expressInstance);
  await app.init();

  return app;
};

const main = bootstrap(server);

export const subscriptions = functions
  .pubsub
  .topic('cron-topic')
  .onPublish((context, message) => main.then(app => {
    return app.get(SubscribeService).initDailyCharges(context, message));
  });
Run Code Online (Sandbox Code Playgroud)