0

順序付けられたデータを処理していて、この問題が発生しました。

push()を使用してアイテムを場所に追加し、作成日に優先度をミリ秒単位で設定して、日付順に並べ替えます。次のアイテム、または前のアイテム(次がない場合)のアイテムの順序を変更して優先順位を取得しようとすると、1つを追加または減算して、移動したアイテムの優先順位を結果に設定します。優先度を取得しましたが、setPriority()を呼び出すと、アイテムの優先度が失われます。グラフィカルデバッガーを使用してアイテムをエクスポートすると、移動された各アイテムの優先度は返されません。移動されていないアイテムの正しい優先度を返します。

いくつかのコード:

/ * idは、移動されるdivのIDです。
jqueryuiのソート可能なものを使用する
div idは、「item_」+ firebaseref.name()のように形成されます
* /
name = id.substr(id.indexOf('_')+ 1);
id2 = $('#' + id).next()。attr('id');
if(id2){
    name2 = id2.substr(id2.indexOf('_')+ 1);
    itemRef = rootRef.child('path / to / my / items /'+ name2);
    itemRef.once('value'、function(dataSnapshot){
        var pr = Number(dataSnapshot.getPriority())、
        myRef = rootRef.child('path / to / my / items /'+ name);
        myRef.setPriority(pr-1); //これまたはtoStringを以下のように試しました
    });
} そうしないと {
//前のアイテムを試す
    id2 = $('#' + id).prev()。attr('id');
    if(id2){
        name2 = id2.substr(id2.indexOf('_')+ 1);
        itemRef = rootRef.child('path / to / my / items /'+ name2);
        itemRef.once('value'、function(dataSnapshot){
            var pr = Number(dataSnapshot.getPriority())+ 1、
            myRef = rootRef.child('path / to / my / items /'+ name);
            myRef.setPriority(pr.toString());
        });
    }
}

'child_moved'リスナーがありましたが、現在は使用していません。何か案は?

4

1 に答える 1

0

これは Firebase のバグです。現時点では原因はわかりませんが、特定のサイズより大きい数値が正しく保存されていないようです。完了したら、この回答を調査して更新します。

更新: このバグは解決されました。もう一度試してみてください!

于 2012-12-28T19:07:12.623 に答える