Following you comment, here is below the HTML code I tried. Note that it is not Cloud Function code (which uses the Admin SDK) but some JavaScript code using the JavaScript SDK. But most probably the Admin SDK has the same behavior.
To try it do as follows:
- Create a collection
testSO
in Firestore and a doc with ID doc1
and one dummy field.
- Save this HTML page on your computer and open it in browser.
- Then change the values and reload the page in the browser for experimenting the behavior
You will see that both arrayUnion
and increment
work when used with an array of strings for arrayUnion
(field array1
) and a number for increment
(field count1
) but not with the compounded object.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-functions.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-firestore.js"></script>
</head>
<body>
<script>
// Initialize Firebase
var config = {
apiKey: 'xxxxxxxxxxx',
authDomain: 'xxxxxxxxxxx',
databaseURL: 'xxxxxxxxxxx',
projectId: 'xxxxxxxxxxx'
};
firebase.initializeApp(config);
var db = firebase.firestore();
db.doc('testSO/doc1').update({
count1: firebase.firestore.FieldValue.increment(1),
array1: firebase.firestore.FieldValue.arrayUnion('arrayItem'),
object: {
count: firebase.firestore.FieldValue.increment(1),
list: firebase.firestore.FieldValue.arrayUnion({
space_id: 'spaceNbr',
user: {
displayName: 'john doe'
}
})
}
});
</script>
</body>
</html>
object
field in your document? In addition, if I am not mistaking, arrayUnion doesn't work with nested arrays. – TelemetryarrayUnion
seems to work, but not the increment within theobject
map. If you put anothercount
field (e.g.count1
) outside of the object the increment works. – TelemetryarrayUnion
in the object does not work, it overwrites the existing data. – Telemetry