Help us understand the problem. What is going on with this article?

nullを条件にしたクエリでデータを取ってくる方法 in ruby and firebase

一覧表示させるためにwhereを使う

hogehoge.rb
    def self.all
        list = collection.where("format", "=", null).order(:created_at).get
    end

上記のような形でformatというフィールドにnullを持ったドキュメントを全て持ってくるようなクエリを作るようなコードを書いているつもりなのですが、null部分がundefinedのエラーが出てきてしまい、取得することができなさそうなんですね。

ここの記事には、

Firestore select where a field is null [duplicate]

it is not possible to index on a field that is NOT in the document

と書いてあるし、無理なのかとも思ったんですが、更に下の方には、

However there is a workaround which consists in querying documents that contain properties with a null value data type

とあるので、いけそうでもある。

解決策

rubyではnullってnilで表すんだわ
そう、これですね。ruby上ではnullを扱うにはnilにするのでした。

hogehoge.rb
    def self.all
        list = collection.where("format", "=", nil).order(:created_at).get
    end

とすれば、firebaseからnullを条件にしてドキュメントを取ってくることができました。

おまけ

データを取得してくる時にコレクションに対して、インデックスがないから作れという形でエラーが出ることがあります。

9: The query requires an index. You can create it here: 長ったらしいURL

こんな感じのエラーが出るので、URLをコピペすると、firebaseコンソールに飛び、インデックスを作成するためのダイアログが開くので、ポチッと押してインデックスがビルドされるのを待ってください。ビルドには数分かかります。しばらく経ってまだビルド中みたいになっていてもコンソール自体に更新かけると終わってたりします。

Nedward
現在獲得しているエンジニア称号: 『生まれたての子鹿』 ストックも嬉しいですが、定数化したいので、いいねもお願いします! 自身の対人認知変容訓練中 良かったらTwitterのフォローもお願いします!! 動画師として活動再開予定
gaiax
人と人をつなげる Empowering the people to connect.
http://www.gaiax.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away