用于Firebase的Typeorm+Express on Cloud函数



我搜索了很多,但没有搜索到关于如何使用Typeorm和express设置firebase云函数的内容。

我正试图用Express+Apolo服务器+TypeORM构建一个api服务器,但要用TypeORM连接到DB,我需要做一些类似的事情

createConnection().then(async connection => {
// init server here
app = express()
...
})

但要部署到燃烧基地,我必须进行

export const server = functions.https.onRequest(app)

我该如何组合这些?

也许我可以做

export const server = functions.https.onRequest(async (req, res) => {
createConnection().then(async connection => {
// init server here
app = express()
...
})
})

但由于它是云功能,所以每次收到请求时,都会创建一个新的实例,这意味着会创建新的连接。这样可以吗?难道不会有任何速度问题吗?


更新

import { connect } from './config';
const app = express()
export const server = functions.https.onRequest(async (req, res) => {
const connection = await connect();
return app(req, res)
})

假设您有一个./config文件,您可以在其中建立DB连接。然后,您可以将其导入index.ts并按如下方式使用:

import * as functions from 'firebase-functions';
import { connect } from './config';
export const server = functions.https.onRequest(async (request, response) => {

// Establish connection to DB
const connection = await connect();
const usersRepository = connection.getRepository(Users);
// Count the users
const count = await usersRepository.count();
// Get all the users 
const allUsers = await usersRepository.find();
// SQL Query to fetch the users who are older than 21
const query = await usersRepository.query('SELECT name FROM users WHERE AGE > 21');    
response.send(allUsers);
});

如果您仍然对如何配置配置文件有疑问,我相信将此示例代码与typeORM配置文件一起使用可能会有所帮助。

我还建议您查看Firebase文档,了解有关在Firebase的Cloud Functions中使用Express.js的示例。


更新:要将Express+TypeORM添加到Firebase的云功能中,您可以执行以下操作:

import * as functions from 'firebase-functions';
import {Request, Response} from "express";
import { connect } from './config';
import * as express from 'express';
// Initializing Express server and defined PORT
const PORT = 3000;
const app = express();
// Register '/' endpoint 
app.get('/', (request, response, next) => {
response.send('Hello World from Cloud Firestore for Firebase');
});
// Register 'users' endpoint
app.get('/users', async function(request: Request, response: Response) {
// Establish connection to DB
const connection = await connect();
const usersRepository = connection.getRepository(Users);
// Get all the users 
const allUsers = await usersRepository.find();
response.json(allUsers);
});
app.listen(PORT, () => {
console.log('Server is running on PORT', PORT);
});
// Exports the Express app as a single HTTP function
exports.app = functions.https.onRequest(app); 

请参阅Firebase文档和TypeORM存储库,以便将Express添加到应用程序中。

最新更新