开发者问题收集

Node.js firebase 集成

2020-04-22
147

我希望你能帮助我,我正在使用 Node.js(无状态)制作一个连接到 Firebase 的 API,主要目标是创建用户并处理集合(添加、编辑、查阅)信息,我正在使用以下 Firebase 模块

const firebase = require('firebase');
firebase.initializeApp(firebaseConfig);

当我尝试插入数据时,因此没有用户登录,并且插入信息或删除或修改的方法,我收到用户权限错误。

代码示例:

const db = firebase.firestore();
let botRef = db.collection('bot').doc(bot.botId);
botRef.get().then(function(doc) {
    if (doc.exists) {
        botRef.update({ color: bot.color, botname: bot.botname, welcomemessage: bot.welcomemessage });

我该怎么办?还是我应该使用 Firebase 的管理模块?因为在这个 API 中没有登录 Firebase(因为它是一个无状态 API)感谢您的帮助

2个回答

您应该为此使用 Firebase Admin SDK。它只是包装了用于节点的 Google Cloud Firestore SDK,因此它具有与其相同的 API。

您需要使用服务帐户初始化 SDK。然后,您的代码将对数据库中的所有内容具有完全的读写权限,从而绕过您为实际用户设置的任何安全规则。

Doug Stevenson
2020-04-22

像这样替换模块:

import * as functions from 'firebase-functions';
import admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

顺便说一句,在部署程序之前,不要忘记安装 firebase-admin 。在终端中运行此命令进行安装:

$ npm install firebase-admin --save

这将授予您的云函数管理员权限,这意味着对读取或写入数据没有任何限制。

即使您有任何 firebase 实时数据库或 cloud firestore 规则,它也会覆盖它们。

Dharmaraj
2020-04-22