facebook twitter hatena line email

「Gcp/Firebase/Firestore/複合クエリ」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==複合クエリとは== 二つ条件があると複合クエリとなる。 複合クエリはインデックスを作らないければならない。 ==サンプル=...」)
 
(インデッックス作成)
 
(同じ利用者による、間の1版が非表示)
行13: 行13:
 
   {
 
   {
 
   });
 
   });
<pre>
+
</pre>
  
 
==インデッックス作成==
 
==インデッックス作成==
 
コレクションidをcachesにしてidをascではじめに作りunixtimeをascで作れば良い。
 
コレクションidをcachesにしてidをascではじめに作りunixtimeをascで作れば良い。
 
whereの順序(idとunixtimeの順序)が逆だとインデックスが無効となりインデックスを作れと警告がでる。
 
whereの順序(idとunixtimeの順序)が逆だとインデックスが無効となりインデックスを作れと警告がでる。
 +
 +
==インデックスをコンソールで作成==
 +
まずはfirestoreのプロジェクトを持ってくる
 +
firebase init firestore
 +
 +
デプロイ
 +
firebase deploy --only firestore:indexes
 +
 +
インデックスだけ取得(ただしプロジェクトを持ってこないと後でデプロイはできない)
 +
firebase firestore:indexes > firestore.indexes.json

2019年8月24日 (土) 22:41時点における最新版

複合クエリとは

二つ条件があると複合クエリとなる。

複合クエリはインデックスを作らないければならない。

サンプル

  admin.firestore().collection('caches')
    .where('id', '==', id)
    .where('unixtime', '>', unixtimecachelifesec)
    .limit(1)
    .get()
    .then((snapshot) =>
  {
  });

インデッックス作成

コレクションidをcachesにしてidをascではじめに作りunixtimeをascで作れば良い。 whereの順序(idとunixtimeの順序)が逆だとインデックスが無効となりインデックスを作れと警告がでる。

インデックスをコンソールで作成

まずはfirestoreのプロジェクトを持ってくる

firebase init firestore

デプロイ

firebase deploy --only firestore:indexes

インデックスだけ取得(ただしプロジェクトを持ってこないと後でデプロイはできない)

firebase firestore:indexes > firestore.indexes.json