LoginSignup
114
72

More than 3 years have passed since last update.

cloud functionsでfirestoreを使う

Last updated at Posted at 2019-03-10

alt
結論から言うと、firebaseのcloud functionsでfirestoreを使うには、
firebase-admin
というサードパーティライブラリが必要。
cloud functions自身には、httpリクエストからfireStoreのデータを読む術はない。
(ただしcloud function単体でfireStoreトリガーで、fireStoreクエリを発行することは出来る。)

firebase initでcloud functionを作成した後

npm i firebase-admin --save

以下のように使う

const functions = require('firebase-functions')
// cloud functionでfirestoreを使うのに必要な設定は以下の2行
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase)

// データベースの参照を作成
var fireStore = admin.firestore()

exports.helloWorld = functions.https.onRequest((request, response) => {
  // 動作確認のため適当なデータをデータベースに保存
  var citiesRef = fireStore.collection('cities');
  citiesRef.doc('SF').set({
    name: 'San Francisco', state: 'CA', country: 'USA',
    capital: false, population: 860000 })

  var cityRef = fireStore.collection('cities').doc('SF')
  cityRef.get()
  .then(doc => {
    if (!doc.exists) {
      response.send('No such document!')
    } else {
      response.send(doc.data())
      }
    })
    .catch(err => {
      response.send('not found')
    })
})

今回作成したAPIにgetすると、firestoreにcityが書き込まれ、書き込まれた結果が帰ってくる。
cloud function単体ではfirestoreと連携出来ず、firebase-adminと連携して使う必要がある。

firebase serveと打つと、ローカルでcloud functionsを動作確認できるが、ローカル環境でも、firestoreは問題なく使えた。

114
72
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
114
72