Firebase Reatime 数据库部署错误“TypeError:functions.database.ref 不是函数”

问题描述 投票:0回答:1

代码看起来不错,所需的模块似乎是最新的,firebase 的链接是正确的。但是该功能不会部署并给出错误...

类型错误:functions.database.ref 不是函数

我删除了 gameinfo 部分,因为它只是设置变量,根本不会产生影响

我很抱歉可能没有按照惯例提出这个问题。请善待我,我会再试一次

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const db = admin.database();

exports.matchmaker = functions.database.ref("/matchmaking/{playerId}")
    .onCreate(async (snap, context) => {
      const gameId = generateGameId();
      let secondPlayerKey = null;

      const snapshot = await db.ref("matchmaking").once("value");
      const players = snapshot.val();

      Object.keys(players).forEach((key) => {
        if (key !== context.params.playerId && !players[key].gameId) {
          secondPlayerKey = key;
        }
      });

      if (secondPlayerKey === null) {
        return null;
      }

      const matchmakingRef = db.ref("matchmaking");
      const transactionResult = await matchmakingRef.
          transaction((matchmaking) => {
            if (!matchmaking ||
              !matchmaking[context.params.playerId] ||
              !matchmaking[secondPlayerKey] ||
              matchmaking[context.params.playerId].gameId ||
              matchmaking[secondPlayerKey].gameId) {
              return matchmaking;
            }

            matchmaking[context.params.playerId].gameId = gameId;
            matchmaking[secondPlayerKey].gameId = gameId;
            return matchmaking;
          });

      if (!transactionResult ||
        transactionResult.snapshot.child(`${context.params.playerId}/gameId`).
            val() !== gameId) {
        return null;
      }

      const game = {
        gameInfo: {
          

      await db.ref(`games/${gameId}`).set(game);
      console.log("Game created successfully!");

      return null;
    });

我已尝试检查 firebase 功能和管理的兼容性是否正常。

我已经重新安装了整个程序并重置了所有内容。

我已将这些错误放入 chatG 中,并按照我已用尽其提供的选项的步骤进行操作(因此在这里)。

显然,我只是想要部署该功能

javascript firebase firebase-realtime-database google-cloud-functions
1个回答
0
投票

如果您的 firebase-functions 依赖项完全是最新的,那么您没有使用正确的 API 来构建该函数。 您正在使用旧的 v1 API,但您应该改用 v2 API。 使用

onValueCreated()
代替
functions.database.ref
。 请参阅文档中的示例。例如:

const {onValueCreated} = require("firebase-functions/v2/database");

exports.makeuppercase = onValueCreated(
    "/messages/{pushId}/original",
    (event) => {

// your code goes here

});
© www.soinside.com 2019 - 2024. All rights reserved.