|
|
(同じ利用者による、間の6版が非表示) |
行1: |
行1: |
− | ==コンソールからfirestoreを作成==
| + | [[Gcp/Firebase/Firestore/基本]] |
− | #https://console.firebase.google.com
| + | |
− | #realtimeDatableではなく、データベースの作成ボタンを押す
| + | |
− | #ロックモード・テストモードは、とりあえず、テストモードを選択
| + | |
| | | |
− | ==unityでのfirestoreの操作==
| + | [[Gcp/Firebase/Firestore/ルール]] |
− | 2019/6時点では直接操作できない。
| + | |
− | cloud_functionsなどを利用して操作する必要がある。
| + | |
| | | |
− | ==functionsからfirestore呼び出し==
| + | [[Gcp/Firebase/Firestore/複合クエリ]] |
− | ===準備===
| + | |
− | npm i firebase-aimin --save
| + | |
| | | |
− | ===db準備===
| + | [[Gcp/Firebase/Firestore/async]] |
− | #firestore管理画面のデータ/コレクション追加から
| + | |
− | #テーブル名(例:entries)を入力し
| + | |
− | #age int と name stringを作成する
| + | |
| | | |
− | ===サンプルdb追加===
| + | [[Gcp/Firebase/Firestore/cacheモジュール]] [dir] |
− | | + | |
− | functions/index.js
| + | |
− | <pre>
| + | |
− | const functions = require('firebase-functions')
| + | |
− | const admin = require('firebase-admin')
| + | |
− | admin.initializeApp(functions.config().firebase)
| + | |
− | var fireStore = admin.firestore()
| + | |
− | exports.insert1 = functions.https.onRequest((request, response) => {
| + | |
− | response.send("Hello from Firebase!insert1");
| + | |
− | var data = {
| + | |
− | name: 'goro',
| + | |
− | age: 12
| + | |
− | };
| + | |
− | fireStore.collection('entries').add(data).then(() => {
| + | |
− | response.send("Hello from Firebase!inserted");
| + | |
− | }
| + | |
− | ).catch((err) => {
| + | |
− | });
| + | |
− | });
| + | |
− | </pre>
| + | |
− | | + | |
− | ===サンプルdb更新===
| + | |
− | <pre>
| + | |
− | string id = 'SABU';
| + | |
− | var data = {
| + | |
− | name: 'saburo',
| + | |
− | age: 33,
| + | |
− | };
| + | |
− | var setDoc = db.collection('entries').doc(id).set(data);
| + | |
− | </pre>
| + | |
− | | + | |
− | ===db参照===
| + | |
− | const count = data.count;
| + | |
− | return admin.firestore().collection('entries')
| + | |
− | .orderBy('point', 'desc')
| + | |
− | .limit(count)
| + | |
− | .get()
| + | |
− | .then((snapshot) =>
| + | |
− | {
| + | |
− | var obj = {
| + | |
− | status: 'ok',
| + | |
− | notice: 'Processing succeeded.',
| + | |
− | users: snapshot.docs.map(x => x.data()),
| + | |
− | }
| + | |
− | var json=JSON.stringify(obj); // {"status":"ok","notice":"","users":[{"point":140,"name":"siro"},{"point":130,"name":"saburo"},{"point":120,"name":"jiro"}]}
| + | |
− |
| + | |
− | | + | |
− | ===db参照条件===
| + | |
− | const count = data.count;
| + | |
− | return admin.firestore().collection('entries')
| + | |
− | .where('name', '==', 'saburo')
| + | |
− | .get()
| + | |
− | .then((snapshot) =>
| + | |
− | {
| + | |
− | var obj = {
| + | |
− | status: 'ok',
| + | |
− | notice: 'Processing succeeded.',
| + | |
− | users: snapshot.docs.map(x => x.data()),
| + | |
− | }
| + | |
− | var json=JSON.stringify(obj); // {"status":"ok","notice":"","users":[{"name":"saburo","point":130}]}
| + | |
− | | + | |
− | ===db参照条件不等号===
| + | |
− | .where("population", "<", 100000)
| + | |
− | .where("name", ">=", "San Francisco")
| + | |
− | | + | |
− | ==無料枠==
| + | |
− | <pre>
| + | |
− | 無料枠 割り当て
| + | |
− | 保存データ 1 GiB
| + | |
− | ドキュメントの読み取り 50,000/日
| + | |
− | ドキュメントの書き込み 20,000/日
| + | |
− | ドキュメントの削除 20,000/日
| + | |
− | ネットワーク(下り) 10 GiB/月
| + | |
− | </pre>
| + | |
− | https://firebase.google.com/docs/firestore/quotas?hl=ja
| + | |
− | | + | |
− | ===無料枠を超えたら===
| + | |
− | <pre>
| + | |
− | マルチリージョン 無料割り当て超過分の料金
| + | |
− | ドキュメントの読み取り ドキュメント 100,000 点あたり $0.06
| + | |
− | ドキュメントの書き込み ドキュメント 100,000 点あたり $0.18
| + | |
− | ドキュメントの削除 ドキュメント 100,000 点あたり $0.02
| + | |
− | </pre>
| + | |
− | ==制限==
| + | |
− | ドキュメント最大サイズ:1,048,576バイト
| + | |
− | | + | |
− | https://firebase.google.com/docs/firestore/quotas?hl=ja
| + | |