Reputation: 185
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?
Upvotes: 15
Views: 4424
Reputation: 6926
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);
Upvotes: 20