13

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?

camendoza94
  • 166
  • 1
  • 12

1 Answers1

19

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);
Grimthorr
  • 6,856
  • 5
  • 41
  • 53