You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Auth创建用户时触发Cloud Function写入Firestore报错求助

解决Firebase Cloud Function中db.collection is not a function的错误

这个问题其实很典型——你混淆了Firebase的实时数据库和Firestore的API引用方式!

错误根源

你代码里的这一行:

const db = admin.database()

获取的是Firebase实时数据库的实例,而实时数据库的API里根本没有collection()方法——这个方法是属于Firestore的。所以当你调用db.collection("highscore")时,自然会抛出TypeError: db.collection is not a function的错误。

另外还有一个小语法错误:你在set()的对象里,score: 0后面没有加逗号,这会导致代码运行时出错,这个也需要一并修正。

修正后的完整代码

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
// 替换成Firestore的引用
const db = admin.firestore();

// On user creation, trigger: Add information to /highscore/uid
exports.onUserCreation = functions.auth.user().onCreate((user) => {
  const collection = db.collection("highscore");
  const userid = user.uid;
  const usernick = user.displayName;
  
  // 注意补上score字段后的逗号
  return collection.doc(userid).set({
    score: 0,
    user: usernick
  });
});

额外注意事项

  • 确保你的Firebase项目已经启用了Firestore服务(可以在Firebase控制台的"Firestore数据库"页面确认)。
  • 别忘了在set()方法前加上return,这样Cloud Function才能正确等待异步操作完成,避免函数提前终止。

内容的提问来源于stack exchange,提问作者CJR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:34:44