【发布时间】:2023-02-13 23:09:27
【问题描述】:
使用 Firebase 的实时数据库,使用 TypeScript 表达 REST Api。对所讨论堆栈的实施所采取的初始步骤的简要总结:
- 首先在 .env 文件中定义必要的环境变量,包括私钥和数据库 URL。
FIREBASE_PROJECT_ID="" FIREBASE_PRIVATE_KEY="" FIREBASE_CLIENT_EMAIL="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n" FIREBASE_DATABASE_URL="...firebaseio.com"-
为实时数据库中的用户数据结构定义必要的模型和接口,包括哈希密码和地址信息。
-
创建一个 server.ts 文件来设置 Express 应用程序,导入必要的包,并定义必要的中间件,例如 cors 和 body-parser。
import bodyParser from 'body-parser'; import cors from 'cors'; import app from './app'; export function start() { app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cors()); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server started at http://localhost:${address.port}`); }); } -
创建一个单独的 app.ts 文件来定义 REST API 的端点和路由。导入并使用 dotenv 库将环境变量加载到项目中。
从“dotenv”导入 dotenv; 从“firebase-admin”导入 firebase; 从“快递”进口快递;
import router from './routes/user.route'; import { start } from './server'; dotenv.config(); firebase.initializeApp({ credential: firebaseAdmin.credential.cert({ projectId: process.env.FIREBASE_PROJECT_ID, privateKey: process.env.FIREBASE_PRIVATE_KEY, clientEmail: process.env.FIREBASE_CLIENT_EMAIL, }), databaseURL: process.env.FIREBASE_DATABASE_URL }); start(); const app = express(); app.use('/signup', router); app.use('/login', router); app.use('/user/:userId', router); export default app;
运行 start nodemon,我得到错误:'默认的 Firebase 应用程序不存在。确保在使用任何 Firebase 服务之前调用 initializeApp()。
安装的依赖项:
"dependencies": { "@types/express": "^4.17.17", "bcrypt": "^5.1.0", "body-parser": "^1.20.1", "cors": "^2.8.5", "dotenv": "^16.0.3", "express": "^4.18.2", "firebase": "^9.17.1", "firebase-admin": "^11.5.0", "nodemon": "^2.0.20", "ts-node": "^10.9.1", "typescript": "^4.9.5" }, "devDependencies": { "@types/bcrypt": "^5.0.0", "@types/cors": "^2.8.13" } -
【问题讨论】:
标签: node.js firebase express firebase-realtime-database