数値の優先順位で子を並べ替え (交換) しようとしています。これが私の試みです:
var swapChildrenByPriority = function(url, child1Priority, child2Priority){
var ref = new Firebase(url);
var child1, child2;
ref.on('value', function(snap){
snap.forEach(function(child){
if(child.getPriority() === child1Priority){
child1 = child;
};
if(child.getPriority() === child2Priority){
child2 = child;
};
});
});
ref.child(child1.name()).setPriority(child2.getPriority());
ref.child(child2.name()).setPriority(child1.getPriority());
};
ご想像のとおり、これは機能しません。この関数が呼び出されると、Chrome のコンソールでエラーがスローされます。
TypeError: Cannot call method 'name' of undefined
Uncaught TypeError: Cannot call method 'name' of undefined
子に優先順位が設定されていないかのように見えます。Forge にデータをインポートすると、すべての子にプロパティ ".priority" : 5.0 が設定されます。
そして、関数をもう一度呼び出すと、念のため、次のようになります。
TypeError: Object https://test.firebaseio.com/testPriority has no method 'child'
firebaseでこれを行う正しい方法は何ですか?
また、AngularFire サービスを使用しているディレクティブのスコープ内のデータがそれに応じて並べ替えられ、ビューが更新されるように、AngularFire で同じことを行う方法は?
お時間をいただき、
誠に
ありがとうございます。