の鍵を得ることができない私はdatasnapshot
dataSnapshot.key()
方法でスナップショットのキーを取得しようとしていますが、それが動作していないようです。ここでは、関連するコードは次のとおりです。
のindex.html:
...
<select id="resList" size="20"></select>
...
index.js:
function addChild(name, id) {
var list = document.getElementById("resList");
var item = document.createElement("option");
item.text = "Resolution " + id + ": " + name;
list.add(item);
}
function changeChild(name, index) {
var list = document.getElementById("resList");
var item = document.createElement("option");
item.text = "Resolution " + (index+1) + ": " + name;
list.remove(index);
list.add(item, index);
}
function removeChild(index) {
var list = document.getElementById("resList");
list.remove(index);
}
function init() {
const resolutionRef = firebase.database().ref().child('resolutions');
resolutionRef.on('child_added', function(childSnapshot, prevChildKey) {
if (prevChildKey == null)
prevChildKey = "0";
addChild(childSnapshot.val(), parseInt(prevChildKey) + 1);
});
resolutionRef.on('child_changed', function(childSnapshot, prevChildKey) {
if (prevChildKey == null)
prevChildKey = "0";
changeChild(childSnapshot.val(), parseInt(prevChildKey));
});
resolutionRef.on('child_removed', function(oldChildSnapshot) {
removeChild(parseInt(oldChildSnapshot.key()));
});
}
window.onload = init;
私は '決議' と呼ばれる 'ルート' 参照の子を持っています。各解決のために、「解決」参照への新しい子が作成されます。各解像度には名前とIDがあります。私は各解像度のIDをキーとして保存しています。値は名前です。これは便利な方法です。この方法で、「resList」内の解像度のインデックスを、そのキーの1つを単に減算することによって決定できます。
上記のコードは子供の追加や変更には問題ありませんが、何らかの理由で子を削除しても何も起こりません。
事前にお問い合わせいただきありがとうございます。
Firebase JavaScript SDKのどのバージョンを使用していますか? 2.xでは、 'snapshot.key()'は関数でした。 3.xでは、読み取り専用のプロパティに変更されたので、同等のものが 'snapshot.key'になりました。 –
@FrankVanPuffelenそれは動作します!ありがとう! (私は途中でfirebase 3.3.0を使用しています) – zomnombom