K20*_*0GH 5 javascript express firebase firebase-authentication google-cloud-firestore
我正在使用 Cloud Functions 和 Firestore。
在我的 index.js 中,我像这样初始化 Firebase:
索引.js
const admin = require("firebase-admin");
const functions = require("firebase-functions");
const usersApi = require("./api/users")
const paymentsApi = require("./api/payments")
const express = require('express');
const cors = require('cors');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore()
const app = express();
const checkHeader = async(req, res, next) => {
if(req.headers.authorization) {
admin.auth().verifyIdToken(req.headers.authorization)
.then(token => {
req.uid = token.uid;
req.email = token.email;
req.stripeID = token.stripeID || null;
return next();
})
.catch(e => {
return next(e.errorInfo.code)
})
} else {
return next('No token found');
}
}
app.use(cors({origin: true}));
app.use(express.urlencoded({extended: true}));
app.use(express.json());
app.use(checkHeader);
app.disable("x-powered-by");
app.use("/users", usersApi)
app.use("/payments", paymentsApi)
exports.api = functions.https.onRequest(app)
Run Code Online (Sandbox Code Playgroud)
然后在我的用户路由器中,我有以下内容:
api/用户/index.js
const express = require('express');
const admin = require("firebase-admin");
const userRouter = express.Router();
const functions = require("firebase-functions");
const db = admin.firestore();
userRouter.post('/addUser', (req, res) => {
return adminT.collection('users').doc(req.uid).set({
activeSub: false,
name: req.body.name
})
.catch(err => {
throw new functions.https.HttpsError('unknown', err.message, {success:false, error: {err}})
})
})
userRouter.post("*", (req, res) => {
res.status(404).send("This route does not exist");
})
module.exports = userRouter;
Run Code Online (Sandbox Code Playgroud)
根据我配置代码的方式,我似乎遇到了一些错误。上面设置中的第一个是:
错误:默认 Firebase 应用不存在。确保在使用任何 Firebase 服务之前调用 initializeApp()。
如果我然后在我的用户路由中初始化它,我会被告知默认的 Firebase 实例已经初始化。
如何初始化 Firebase 一次,然后在整个 Cloud Function 应用程序中使用它?
所以我最终设法让这个工作。
在我的index.js 中,我删除了:
admin.initializeApp(functions.config().firebase);
const db = admin.firestore()
Run Code Online (Sandbox Code Playgroud)
我创建了一个名为fb.js的文件:
const admin = require("firebase-admin");
const functions = require("firebase-functions");
module.exports = admin.initializeApp(functions.config().firebase);
Run Code Online (Sandbox Code Playgroud)
然后像这样编辑我的路线:
const express = require('express');
const userRouter = express.Router();
const fb = require('../../fb');
const db = fb.firestore()
userRouter.post('/addUser', (req, res) => {
return db.collection('users').doc(req.uid).set({
activeSub: false,
name: req.body.name
})
.catch(err => {
throw new functions.https.HttpsError('unknown', err.message, {success:false, error: {err}})
})
})
userRouter.post("*", (req, res) => {
res.status(404).send("This route does not exist");
})
module.exports = userRouter;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1997 次 |
最近记录: |