2 Replies
it's okay to mix object types with indexes! say you have two documents:
{a: {kind: "first", message: "hi"} } and {a: {kind: "second", photo: "<some url>"}}, and you add an index on the a.message field path.
then, the index will extract the string "hi" from the first document and undefined from the second one (since the field path a.message isn't present).
you can find the second document by passing undefined to q.eq (https://docs.convex.dev/api/interfaces/server.IndexRangeBuilder#eq). this type helper explains a bit more about field paths and undefined handling: https://docs.convex.dev/api/modules/server#fieldtypefromfieldpath
note that undefined isn't a valid Convex value (so you can't stick it in the database), but it's a valid value to compare against when accessing a field path that's missing.
also cc @Mikael Lirbank ^^Sweet!