In Firestore you can create objects with data type Reference. But this is just the path to said document. What's the difference between using this and just using the id as a String field? Any advantages/disadvantages?
A DocumentReference refers to a document location in a Cloud Firestore database and can be used to write, read, or listen to the location. There may or may not exist a document at the referenced location. A DocumentReference can also be used to create a CollectionReference to a subcollection.
The firestore emulator is allowing two documents with the same ID to be added in a collection.
Correct, it is extremely unlikely, but not guaranteed.
A DocumentReference refers to a document location in a Firestore database and can be used to write, read, or listen to the location. The document at the referenced location may or may not exist. A DocumentReference can also be used to create a CollectionReference to a subcollection.
A Reference
contains the entire path to a document, whereas a simple string ID has no context. Granted, you could just store the path as a string instead, but for convenience (and ease of use in custom objects) it can be useful to have the entire Reference
object stored.
The sort order of a Reference
is also different to that of a String
. From the Supported Data Types documentation:
- Reference sort order: By path elements (collection, document ID, collection, document ID...)
- Text string sort order: UTF-8 encoded byte order
This means that you can also filter on a Reference
object in the database by comparing it to another when writing queries.
For example:
var reference = db.collection("test").document("1");
var query = db.collection("test").orderBy("ref").where("ref", ">", reference);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With