|
|
| (同じ利用者による、間の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
| + | |