So I’m working on a personal project to learn react-native and Firestore.
I have a DB like this:
And I want my code to add a new battery in the array batteries.
The elements in the array are just a map{string, string}
The problem is that when I update the array with a new brand that’s work but if I want to update it with the same brand again have, so having by the end
batteries[0]: {'brand': 'cestmoi'}
batteries[1]: {'brand': 'cestmoi'}
The DB doesn’t update, doesn’t have any error or so.
I don’t understand why and I followed their tutorial. Here is my code:
async function addData(collection, doc, value) {
console.log(`Add data ${value.brand}`)
try {
const result = await firestore()
.collection(collection)
.doc(doc)
.set({
batteries: firestore.FieldValue.arrayUnion(value)
})
console.log(result);
return result;
} catch (error) {
return error;
}
}
I use try-catch by habit but I don’t know if the then...catch is better or not.
Advertisement
Answer
arrayUnion says that it “adds elements to an array but only elements not already present”. Maybe it does a stringify or something to check equality and therefore doesn’t add the new element. I think you’ll have to 1. get the current list, 2. add your element, 3. set the batteries field to the updated list.
