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

如何使用Node.js Cloud Functions在Cloud Firestore新增用户时添加Wallet字段

实现方案

原代码问题说明

  • 错误使用Firestore方法:Admin SDK中获取文档引用的方法是doc()而非document(),add()方法用于创建新文档,无法为已有文档更新字段
  • 无需手动拼接目标文档路径:触发函数的onCreate事件传入的snap参数直接对应当前新建的用户文档,可直接通过snap.ref操作该文档
  • 触发规则天然满足仅执行一次的要求:onCreate触发器仅在文档首次创建时触发,后续用户文档更新(如充值修改Wallet字段)不会触发该函数

修正后可运行的完整代码

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

exports.onUserCreate = functions.firestore  
  .document("Users/{mobile}")
  .onCreate(async (snap, context) => {
    // 可选:增加判空逻辑,避免极端场景下云函数重试导致重复执行
    const userData = snap.data();
    if (userData.Wallet === undefined) {
      // 直接对当前新建文档做合并更新,写入Wallet字段
      await snap.ref.set({
        Wallet: 0
      }, { merge: true });
    }
  });

部署后只要Users集合下新增文档,函数就会自动触发给该文档添加值为0的Wallet字段,后续文档更新操作不会触发该函数,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:48:01