【发布时间】:2022-08-13 21:08:44
【问题描述】:
我正在创建一个带有 Firebase 云功能的 NestJS 应用程序。我必须在 NestJS 应用程序中同时使用来自 Firebase 的 onRequest 和 onCreate(Firestore 事件)。如何处理onRequest 事件非常简单。但是,我不确定在必须同时做这两件事时我是否做得对。为了让我将onCreate 事件更改和上下文传递给服务层,我需要访问AppService 类。为此,我需要访问已创建的 app 实例。但是,我觉得我正在创建app 的两个实例(请参阅代码)。我想知道我目前的实施是否最好实践,或者是否有任何方法可以改进。请注意,我是一名前端开发人员,所以这项工作超出了我的舒适范围。我想知道做到这一点的最佳方法,特别是如果我必须处理更多事件,例如onUpate、onDelete 等。
import { NestFactory } from \'@nestjs/core\';
import { ExpressAdapter } from \'@nestjs/platform-express\';
import { AppModule } from \'./app.module\';
import * as express from \'express\';
import * as functions from \'firebase-functions\';
import * as admin from \'firebase-admin\';
import { Express } from \'express-serve-static-core\';
import { AppService } from \'./app.service\';
const server = express();
export const createNestServer = async (expressInstance: Express) => {
//FIRST APP INSTANCE
const app = await NestFactory.create(
AppModule,
new ExpressAdapter(expressInstance),
);
admin.initializeApp();
return app.init();
};
createNestServer(server)
.then((v) => console.log(\'Nest Ready\'))
.catch((err) => console.error(\'Nest broken\', err));
//exporting all onRequest events
export const api = functions.https.onRequest(server);
//exporting the onUserCreate event
exports.onUserCreate = functions.firestore
.document(\'users/{docId}\')
.onWrite(async (change, context) => {
console.log(\'Changes are tracked\');
//SECOND APP INSTANCE
const app = await NestFactory.create(AppModule);
return app.get(AppService).onCreate(change, context);
});
标签: node.js firebase google-cloud-firestore google-cloud-functions nestjs