代码看起来不错,所需的模块似乎是最新的,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 中,并按照我已用尽其提供的选项的步骤进行操作(因此在这里)。
显然,我只是想要部署该功能
如果您的 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
});