首页 > 解决方案 > Firestore 的字段路径无效

问题描述

今天我的 Firestore 出现错误,因为我正在尝试获取包含禁止字符的路径。

REF_ROOT.document(currentUser.uid).collection("records").whereField(workoutName, isEqualTo: "Open 16.5 / 14.5").getDocuments

是否可以在斜杠(或实际上任何禁止字符)之前添加反斜杠或任何内容,以便继续此请求?

这是我的日志:

Invalid field path (Open 16.5 / 14.5). Paths must not contain '~', '*', '/', '[', or ']'
firebase::firestore::util::ObjcThrowHandler(firebase::firestore::util::ExceptionType, char const*, char const*, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)

标签: iosswiftfirebasegoogle-cloud-firestore

解决方案


不要将路径与它们指向的字段数据混淆。

"Open 16.5 / 14.5"是存储在 Firestore 字段中的完全合法的值。

您的查询是这样的

REF_ROOT.document(currentUser.uid).collection("records")
                                  .whereField(workoutName, isEqualTo: "Open 16.5 / 14.5")
                                  .getDocuments

这告诉我currentUser.uid或者workoutName包含无效字符,而且很可能是workoutName.

尝试在调用之前将其打印出来,以查看控制台中打印的内容。

print(workoutName) //probably prints this: Open 16.5 / 14.5
REF_ROOT.document(currentUser.uid).collection("records")
                                  .whereField(workoutName, isEqualTo: "Open 16.5 / 14.5")
                                  .getDocuments

推荐阅读