facebook twitter hatena line email

「Gcp/Firebase/Firestore」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(db参照条件)
(同じ利用者による、間の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モジュール]]
 
+
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参照条件不等号===
+
citiesRef.where("population", "<", 100000)
+
citiesRef.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
+

2019年8月12日 (月) 21:34時点における版

Gcp/Firebase/Firestore/基本

Gcp/Firebase/Firestore/ルール

Gcp/Firebase/Firestore/複合クエリ

Gcp/Firebase/Firestore/async

Gcp/Firebase/Firestore/cacheモジュール