Modelのプロパティのデータ型が違うと、こうなる
先日、こんなトラブルがあった。
- bulkloaderにて、とあるデータを取り込む。
- 開発コンソールの Datastore Viewer で中身を確認。ちゃんと入ってる。
- 自分のプログラムから、そのデータをクエリで取得すると、特定のプロパティだけ、どのレコードも常に値が None となってしまう。
- ndbを使っているので、キャッシュされている値が、何かの拍子にNoneになってしまっているのか?と思ってキャッシュをクリアしたが、状況変わらず。
原因
bulkloader.yamlにおいて、問題のプロパティを string として取り込む設定になっていたにも関わらず、自分のプログラムのModelの定義では、IntegerProperty にしていたのが原因。
データの実際の型と、それを格納するModelクラスのプロパティの型が一致しないため、格納できなかった模様。
型が違ってたらエラーになるとか、勝手にキャストされるとかではなく、スルっとNoneになってしまうのであった。