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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

237閲覧

firebaseでのsnapshotを更新をしたい

tsu_0829

総合スコア10

Firebase

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/10/10 17:14

前提・実現したいこと

現在、プログラミング初心者ながらunityとfirebaseを用いてオークション機能のあるゲーム作成を行なっています。
一定の制限時間内にRealtime Databaseに投票を集め、Cloud Functionsを活用し、どの投票が一番高額だったかを算出し、その結果をユーザーが取得できるような仕組みを考えています。
が、snapshotの更新タイミングがよくわからずに困っております。

制限時間に達した時に集まった投票を判定する関数をCloud Functionsで実行 ↓ highestなユーザーを決定し、書き込み ↓ ユーザーがRead権限のあるDBにも書き込み

の流れで考えていますが、snapshotの中身の更新が上手くいかず困っております。

判定前

イメージ説明

判定後

イメージ説明

Read可能な場所に書き込み後

![イメージ説明
という感じにできればと思っておりますが、snapshotの中身が上手く更新されなくて困っております。

該当のソースコード

JavaScript

1// 判定を実行 2exports.sampleJudge = functions.https.onRequest((req, res) => { 3 4 const rootRef = admin.database().ref(); 5 6 let snapshotObj; 7 let pushID; 8 let name; 9 10  // isChecked == nullのものを探す 11 rootRef.orderByChild("isChecked").once("child_added", function(snapshot){ 12 snapshotObj = snapshot; 13 pushID = snapshot.key; 14 15  // <判定してhighestのUIDを書き込み> 16 17 rootRef.child(pushID).update({"isChecked":true}); 18 return; 19 }) 20 21 // ユーザーがReadできる場所に書き込み 22 .then(function(){ 23 snapshotObj.child("highest").forEach(function(childSnapshot) { 24 25 // <書き込み処理> 26 27 }); 28 return; 29 }) 30 // エラー処理 31 .catch(error => { 32 console.log("error"); 33 }); 34});

試したこと

判定してhighestのnameを書き込んだあとに snapshotObj = snapshot などと上書きのようなことを試みて見ましたが .then以下では更新されておらずに snapshot.child("highest").exists() == false になります。
once()だと1回しかsnapshotは読み取られず更新されないのでしょうか?

よく理解していないことばかりで申し訳ありませんが、snapshotの取り扱いについてご教授いただけますとたすかります。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問