我正在尝试编写一个简单的 Firebase 函数,使用 TypeScript 将记录添加到 Firestore。代码的精简版本是:
import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
const config = functions.config();
admin.initializeApp(functions.config().firebase);
admin.database.enableLogging(true);
exports.subscriptions = functions.https.onRequest(
async (req, res) => {
try {
const requestSubscription = req.body;
const subscription = {
subscription_id: requestSubscription.subscription_id,
email: requestSubscription.email || ""
};
const id = subscription.subscription_id;
const dbSubscriptions = admin.firestore().collection("subscriptions");
await dbSubscriptions.doc(id).set(subscription);
return res.status(200).send(`Success`);
} catch (e) {
console.error(e.stack);
return res.status(500).send(`Error`);
}
}
);
Run Code Online (Sandbox Code Playgroud)
这在本地按预期工作。当我部署时,我收到此错误:
Error: 7 PERMISSION_DENIED: Missing or insufficient permissions.
at …
Run Code Online (Sandbox Code Playgroud) firebase typescript google-cloud-functions google-cloud-firestore
我正在使用 firebase 作为后端编写一个应用程序,并且尝试写入数据库,但收到“错误 7:权限缺失或不足”。有人告诉我云功能绕过了 firebase 权限,所以我不确定是什么导致了这个错误。有人可以看一下吗?
这是我的权限:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
var express = require('express');
admin.initializeApp(functions.config().firebase);
const app = express();
let db = admin.firestore();
app.get('/helloworld', (req, res) => res.send('Hello World!'));
app.post('/signup', (req, res) => {
var email = req.body.email;
var username = req.body.username;
var password = req.body.password;
//creating document. Here is where it isn't working …
Run Code Online (Sandbox Code Playgroud)