5

update メソッドを使用して、firebase のオブジェクトのいくつかのプロパティを更新しています。更新呼び出しの一部として、オブジェクトの優先度も更新できますか?

firebase に格納されているオブジェクトのコレクションがあります。Javascript SDK を使用してデータを操作しています。オブジェクトのプロパティを更新するたびに、オブジェクトの優先度を Firebase.ServerValue.TIMESTAMP 定数に設定します。

ここで、オブジェクトで定義された UpdatedOnTimestampTs というプロパティに、各オブジェクトの優先順位を格納し始めたいと思います。プロパティを更新するたびに、UpdatedOnTimestampTs も TIMESTAMP 定数で更新します。

問題は、優先度とともに update 関数を呼び出す方法を見つけることができないことです (setWithPriority のような updateWithPriority はありません)。したがって、TIMESTAMP 定数を使用して 2 つの異なる操作で UpdatedOnTimestampTs と優先順位を更新すると、異なる値になる可能性があります (またはそうなるでしょう)。

どうすればこれに対処できますか?

4

1 に答える 1

7

ここでの回答が遅れていることはわかっていますが、今は似たようなものが必要であり、updateWithPriority存在しません(フォージで優先度を簡単に表示/編集する方法もありません)。

特別な名前のキーを.priority更新に含めることができ、目的の効果が得られるはずです。

.priorityキーはFirebase REST APIに記載されていますが、他のライブラリで使用できます。

したがって、Javascript では、優先度のみを更新したい場合は次のように動作します (そのsetPriorityためにあります)。

var fb = new Firebase("http://a_firebase.firebaseio.com");
var ref = fb.child("/path/to/child");
var data = { ".priority": (new Date()).getTime() } //timestamp, as you mentioned
ref.update(data);

他のプロパティを更新しているときに優先度を変更したい場合は、更新するデータに含めるだけです。

var fb = new Firebase("http://a_firebase.firebaseio.com");
var ref = fb.child("/path/to/child");
var data = { 
    "property1": "updated_val",
    "property2": "updated_val2",
    ".priority": (new Date()).getTime(), //timestamp, as you mentioned
}
ref.update(data);

編集:明確にするために、これは子参照の場所の優先度(つまり/path/to/child) を更新し、更新される個々の子の優先度 (つまり と の優先度) ではありませproperty1property2。更新中の子に優先度を含めたい場合で、子がリーフ ノード (つまり、文字列、数値、ブール値) である場合は、特別な名前.valueのキーをキーと組み合わせて使用​​できます.priority

次の例は、更新元のルート ロケーション (つまりpath/to/child) と更新中の両方の子 (つまりproperty1property2) の優先度を更新する方法を示しています。明らかに、すべてを更新したくない場合は、更新する優先度を選択的に選択できます。

var fb = new Firebase("http://a_firebase.firebaseio.com");
var ref = fb.child("/path/to/child");
var newPriority = (new Date()).getTime(); //timestamp, as you mentioned
var data = { 
    "property1": {".value": "updated_val", ".priority": newPriority},
    "property2": {".value": "updated_val2", ".priority": newPriority},
    ".priority": newPriority
}
ref.update(data);
于 2015-10-26T19:59:17.663 に答える