我搜索了很多,但没有搜索到关于如何使用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添加到应用程序中。