facebook twitter hatena line email

Gcp/Firebase/Firestore/基本

提供: 初心者エンジニアの簡易メモ
2021年1月11日 (月) 02:57時点におけるAdmin (トーク | 投稿記録)による版 (db参照件数条件)

移動: 案内検索

コンソールからfirestoreを作成

  1. https://console.firebase.google.com
  2. realtimeDatableではなく、データベースの作成ボタンを押す
  3. ロックモード・テストモードは、とりあえず、テストモードを選択

unityでのfirestoreの操作

2019/6時点では直接操作できない。 cloud_functionsなどを利用して操作する必要がある。

functionsからfirestore呼び出し

準備

npm i firebase-aimin --save

db準備

  1. firestore管理画面のデータ/コレクション追加から
  2. テーブル名(例:entries)を入力し
  3. age int と name stringを作成する

サンプルdb追加

functions/index.js

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) => {
  });
});

サンプルdb更新

string id = 'SABU';
var data = {
  name: 'saburo',
  age: 33,
};
var setDoc = db.collection('entries').doc(id).set(data);

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参照条件

 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参照条件不等号

return admin.firestore().collection('entries')
  .where("population", "<", 100000)
  .get()
return admin.firestore().collection('entries')
  .where("name", ">=", "San Francisco")
  .get()

db参照件数条件

 return admin.firestore().collection('entries')
   .where('name', '==', 'saburo')
   .get()
   .then((snapshot) =>
 {
   var obj = {
       status: 'ok',
       notice: 'Processing succeeded.',
       size: snapshot.size,
   }
   var json=JSON.stringify(obj); // {"status":"ok","notice":"","size":10}

db削除

https://qiita.com/zaburo/items/b91e1cf240aa6f079470

無料枠

無料枠	割り当て
保存データ	1 GiB
ドキュメントの読み取り	50,000/日
ドキュメントの書き込み	20,000/日
ドキュメントの削除	20,000/日
ネットワーク(下り)	10 GiB/月

https://firebase.google.com/docs/firestore/quotas?hl=ja

無料枠を超えたら

マルチリージョン	無料割り当て超過分の料金
ドキュメントの読み取り	ドキュメント 100,000 点あたり $0.06
ドキュメントの書き込み	ドキュメント 100,000 点あたり $0.18
ドキュメントの削除	ドキュメント 100,000 点あたり $0.02

制限

ドキュメント最大サイズ:1,048,576バイト

https://firebase.google.com/docs/firestore/quotas?hl=ja

削除件数

テーブル削除だけでも削除件数にカウントされる。 例えば3件登録されてるテーブルを削除しても、3件カウントアップされる。