「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