Tapas Mukherjee
Tapas Mukherjee

Reputation: 2178

Firestore FieldValue increment with nested object and variable field-name not working

I understand to use Firestore FieldValue increment function in the nested object I need to mention the completed path in the update method. My Ionic 5 project's main method takes the name of the field of the object. Following are the ways I have tried to use it

updateCounter(attr: string){
    Way1:
    let obj = {};
    obj[attr] = firebase.firestore.FieldValue.increment(1); //This is working
    obj.count[attr] = firebase.firestore.FieldValue.increment(1); //This is not working. Value is always 1
    this.afs.doc('path').update(obj);

    Way2:
    this.afs.doc('path').update({
       'count.${attr}': firebase.firestore.FieldValue.increment(1); //Creating a field called '${attr}' and not replacing the value;
    });

    Way3:
    this.afs.doc('path').update({
       `count.${attr}`: firebase.firestore.FieldValue.increment(1); //Error as '``' value not accepted in the function
    });
}

Upvotes: 4

Views: 1173

Answers (1)

l1b3rty
l1b3rty

Reputation: 3640

This should work:

this.afs.doc('path').update({
   ["count." + attr]: firebase.firestore.FieldValue.increment(1);
});

Upvotes: 5

Related Questions