Skip to main content
Version: 2.8.y

Set

This page discusses how set works and its quirks.

We will use setDoc in the example, but it works the same for batch.set and transaction.set.

Stop Unknown Member

Like update, FirelordJS stop unknown member from entering Firestore.

Firestore

FirelordJS

see update for more explanation about this behavior.

Merge Fields

Merge fields Set behave like merge, except that it updates only the listed member and ignore the rest.

Firestore does not reject unknown field path

FirelordJS reject unknown field path

Dot Notation Path

You cannot use dot notation for data, both Firestore and FirelordJS will stop you from you doing so.

Firestore
FirelordJS

Dot Notation will be treated as unknown member.

Unlike update, set treats b.c as field b.c not field c of b.

If the code runs, this is what you will see in the database:

{
a: 1,
'b.c': 1,
}

This is NOT what you will get:

{
a: 1,
b: { c: 1 },
}

The question is, should FirelordJS alters the behavior of set, so it tallies with the characteristic of update(uniformity)?

FirelordJS tries not to alters the behavior if possible. The reason FirelordJS alters update is out of necessity due to update dangerous implicit data deletion behavior.

But there is no dangerous implicit effect in set operations, so FirestoreJS keep thing as it is now.

Will give this deeper thoughts in future as uniform API improve developer experience.