Firestoreのフィールドにどうしても.を使いたい
Firebaseのフィールド、例えばマップのキーにメールアドレスを使いたいパターンはよくあると思う。例えばこういうの。
permissions: { "iseebi@example.com": "read", "admin@example.com": "admin" }
で、これをクエリしようとすると permissions.iseebi@example.com
のようになってしまうのだが、このままだとwhereのキーに入れることができない。
// NG firestore.collection("items") .where("permissions.iseebi@example.com", "in", ["read", "write", "admin"])
なんとかエスケープできないか、というのも試したけど、うまくいかず。
このような場合は、FieldPathを使うと良い。
// OK firestore.collection("items") .where(new firebase.firestore.FieldPath( "permissions", "iseebi@example.com"), "in", ["read", "write", "admin"])
ただ、そもそもこういうのはベストプラクティスに反するので、避けた方が良い。
参考: