[Flutter/dart] 'isDocument()': is not true.
現象
firestoreにデータを保存しようとしたら下記のエラーが発生
Unhandled Exception: 'package:cloud_firestore_platform_interface/src/internal/pointer.dart': Failed assertion: line 53 pos 12: 'isDocument()': is not true.
原因と対応
firestoreのdocumentのidに"/"が入っていた。
documentのidを日付にしたかったので、"2021/01/02"のようなidを設定した。
しかし、firestoreはdocument、collectionの区切りを/としてパスを記憶しており、データの保存先として指定されたパスがdocumentかcollectionかは/を区切りとして頭から偶数番目か奇数番目かでしか判断していない。
そのため、idに/が入っていると、パスが正しく設定されなかった。
対応としてはidには/を使わないようにするしかない。
自分の場合は"2021-01-02"とidを変更することで解決した。
最新記事
すべて表示現象 アプリ内にAdmobを追加して、アプリを起動すると、下記のエラーが発生 java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider 原因 AndroidManifestの書き方が誤っていた。 <meta-data>はactivityと同じ階層にある必要が
概要 Uriを持っていて、Urlに変換したい場合の方法で少し手惑ったので共有します 方法 String url = uri.toString(); これだけです。 最後に ページを開くだけだとUriでもUrlでもいいんですが、WebViewはUrlを要求してくるんですよね。
問題 以前、日本語を含むURLを開くためには、エンコーディングしてやる必要がある、という記事を書きました。 しかし、すでにエンコーディングされているURLを再度エンコーディングしてしまうと、別のURLになってしまいます。 つまり、URLを開く処理の前に、 ・エンコーディングが必要なURLか ・すでにエンコーディングがされているか を判定しないといけないことになります。これは中々煩雑な処理です。 発