Web制作

Firebase メッセージを保存する pushとsetの違い

メッセージを保存するには、pushとsetの2種類があります。

pushを利用すると、下の例でいうと、messageの下に任意のランダムキーが作成され、その中にmessageという変数に格納したデータが保存される。

 

firebase
.database()
.ref(`favorites/${currentUID}/${messageId}/message`)
.push(message);

任意のランダムキーを作成せず、messageの下に直接保存したいのであれば、setを使います。

firebase
.database()
.ref(`favorites/${currentUID}/${messageId}/message`)
.set(message);

この場合でも、messageという階層が2つできてしまいます。

それは、setは指定したオブジェクト全体を保存するため。

つまりは、messageを

const message = {
uid: currentUID,
text: comment,
time: firebase.database.ServerValue.TIMESTAMP,

で定義した場合、messageはオブジェクトとしてそのまま保存される。

つまりは、realtime databaseでは、messageがサブキーの名称として扱われ、その中に定義されたデータ(uid,text,time)が格納される。

Firebase Realtime DatabaseはJSON構造でデータを保存する仕組みのため、定義したオブジェクトが上の階層のキー、プロパティ名がその下の階層のキーとなり各データが保存される。(日常フォルダを保存している作業を解釈しただけに過ぎない。)

firebase
.database()
.ref(`favorites/${currentUID}/${messageId}`)
.set({
createdAt: firebase.database.ServerValue.TIMESTAMP,
message});
}

このような記述であれば、messageをキーとしてその下に、変数messageで定義した各プロパティ名がサブキーとなり、各値を保存することができる。

 

学習サイトはこちら

-Web制作

Copyright© サァーチpage , 2024 All Rights Reserved.