質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

1032閲覧

Cloud FunctionsでFirestoreの更新を監視する必要性について

maskmelon

総合スコア63

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/10/29 09:32

編集2022/01/12 10:55

ReactとFirebaseでアプリを作っています。

特定のアクション時にフレンドユーザーに通知を飛ばせる機能を実装したいと思って調べている中で、Cloud Functionsを使って通知機能を実装するものを見つけました。(下記コード)

しかしやっていることはユーザーの新規登録時やプロジェクトの作成時にnotificationsコレクションにデータを追加しているだけなので、これならクライアント側で実装できるのでは?と思っています。

あえてCloud Functionsでこのような処理を行うメリットというものはあるのでしょうか?

js

1// functions/index.js 2const functions = require('firebase-functions'); 3const admin = require('firebase-admin'); 4admin.initializeApp(functions.config().firebase); 5 6const createNotification = ((notification) => { 7 return admin.firestore().collection('notifications') 8 .add(notification) 9 .then(doc => console.log('notification added', doc)); 10}); 11 12exports.projectCreated = functions.firestore 13 .document('projects/{projectId}') 14 .onCreate(doc => { 15 16 const project = doc.data(); 17 const notification = { 18 content: 'Added a new project', 19 user: `${project.authorFirstName} ${project.authorLastName}`, 20 time: admin.firestore.FieldValue.serverTimestamp() 21 } 22 23 return createNotification(notification); 24 25 }); 26 27exports.userJoined = functions.auth.user() 28 .onCreate(user => { 29 return admin.firestore().collection('users') 30 .doc(user.uid).get().then(doc => { 31 const newUser = doc.data() 32 const notification = { 33 content: 'Joined the party', 34 user: `${newUser.firstName} ${newUser.lastName}`, 35 time: admin.firestore.FieldValue.serverTimestamp() 36 } 37 return createNotification(notification); 38 }) 39 })

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問