首页 > 解决方案 > Firebase admin.database().ref().set() 在 Firebase 函数中失败

问题描述

如何从 Firebase 函数写入实时数据库?为什么该函数在到达实时数据库时总是默默地失败?

似乎我可以获得对数据库的引用,但我无法保存任何值。

try {
  functions.logger.log(`ref: ${JSON.stringify(admin.database().ref(collectionName))}`);
  await admin.database().ref(collectionName).set(value)
  .then(() => {
    functions.logger.log(`value written`);
    // Success ... do stuff
  })
  .catch(error => {
    functions.logger.log(`Catch #2: ${JSON.stringify(error)}`);
    res.status(502).send(error);
  });
} catch (error) {
  functions.logger.log(`Catch: ${JSON.stringify(error)}`);
  res.status(401).send(`Having troublle writing`);
}

输出:

ref: "https://myrealtimedb.firebaseio.com/collectionName" 
Catch: {}
Function execution .... finished with status code: 401

我的函数可以成功地从 Cloud Firestore 创建和读取值,但在处理实时数据库交互时遇到了问题。

设置功能:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import * as express from 'express';

admin.initializeApp();
const main = express();
const appRoutes = new routes();

main.use('/api/', appRoutes.setupRoutes());
main.use(bodyParser.json());
main.use(bodyParser.urlencoded({ extended: false }));

export const api = functions.https.onRequest(main);

(我设置了许多其他功能appRoutes,它们都可以在 firestore 上正常工作。)

标签: typescriptfirebasefirebase-realtime-databasegoogle-cloud-functions

解决方案


推荐阅读