Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cloud Functions FieldValue increment TypeError in Firestore

I am testing cloud functions in the firebase emulator and getting an error when trying to increment a field in the cloud firestore. Please check my code & error message below. Thanks for any help!

import * as functions from "firebase-functions";
import * as admin from "firebase-admin";

admin.initializeApp();

const db = admin.firestore();

export const newUserIncrementStat = functions.firestore.document("users/{uid}").onCreate((snap, context) => {
  const docRef = db.doc("stats/users");

  try {
    return docRef.set({
      totalUsers: admin.firestore.FieldValue.increment(1),
    }, {merge: true});

  } catch (e) {
    console.log("Something is wrong: ", e);
    return Promise.reject(e);
  }
});

Error Message from Firebase Logs:

TypeError: Cannot read properties of undefined (reading 'increment')

Dependencies

firebase-admin: "^11.0.0"

firebase-functions: "^3.22.0"

firebase: 11.3.0

like image 508
user19600961 Avatar asked Jun 09 '26 19:06

user19600961


2 Answers

It`s a issue with modularity improvement of firebase-admin. You can I rolled back to firebase-admin v10.3.0 or use modular import import { FieldValue } from 'firebase-admin/firestore';

import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
import { FieldValue } from 'firebase-admin/firestore';

admin.initializeApp();

const db = admin.firestore();

export const newUserIncrementStat = 
functions.firestore.document("users/{uid}").onCreate((snap, context) => 
{
    const docRef = db.doc("stats/users");

    try {
    return docRef.set({
        totalUsers: FieldValue.increment(1),
    }, {merge: true});

    } catch (e) {
        console.log("Something is wrong: ", e);
        return Promise.reject(e);
    }
});

Or you can fully convert to modular import:

import type { FieldValue, getFirestore } from 'firebase-admin/firestore';
import * as functions from "firebase-functions";
const { initializeApp } = require('firebase-admin/app');


const app = initializeApp();
const db = getFirestore();

export const newUserIncrementStat = 
functions.firestore.document("users/{uid}").onCreate((snap, context) => 
{
    const docRef = db.doc("stats/users");

    try {
    return docRef.set({
        totalUsers: FieldValue.increment(1),
    }, {merge: true});

    } catch (e) {
        console.log("Something is wrong: ", e);
        return Promise.reject(e);
    }
});
like image 200
Felippi Crominski Avatar answered Jun 12 '26 12:06

Felippi Crominski


as @Min commented the error was with the firebase emulator, deploying the function directly to google cloud works without any error.

like image 27
user19600961 Avatar answered Jun 12 '26 10:06

user19600961



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!