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



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

要在HTTP请求中将Nest与Firebase集成,只需将Nest的express实例附加到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);

但其他谷歌功能(如pubsub、firestore、auth等(呢?

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

我正在努力实现这样的目标(简而言之(:

functions.pubsub
.topic('topic')
.onPublish(app.getService(Service).method);

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

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));
});

为独立应用程序找到了一个新的解决方案:https://docs.nestjs.com/standalone-applications

您不需要使用Express服务器引导NestJS来处理PubSub消息。

export const subscriptions = functions
.pubsub
.topic('cron-topic')
.onPublish((context, message) => {
const app = await NestFactory.create(ApplicationModule);
return app.get(SubscribeService).initDailyCharges(context, message);
});

相关内容

  • 没有找到相关文章

最新更新