我浏览了网络,并通过迭代snapshot.getchildren()
通过了许多方法将整个列表附加到firebase数据库中。
我所说的基本上是遵循功能。
private void func (DatabaseReference ref, DataSnapshot snapshot) {
for (DataSnapshot childSnapShot : snapshot.getChildren()) {
ref.child(childSnapShot.getKey()).setValueAsync(childSnapShot.getValue());
//or
ref.push().setValueAsync(childSnapShot.getValue());
}
}
但是我想知道一种方法,可以一次性添加整个快照子数据,而无需任何迭代。
ref.push().setValueAsync(snapshot.value());
上面的语句一次性添加数据,但在父层创建了一个额外的密钥。
而
ref.setValueAsync(snapshot.value());
会覆盖整个Firebase,而不是附加。
是否可以一次添加整个列表?
答案 0 :(得分:0)
可以。您可以获取snapshot
对象,将其强制转换为HashMap
对象,然后直接在引用上进行设置,而无需进行以下迭代:
private void func (DatabaseReference ref, DataSnapshot snapshot) {
val map : HashMap<String, Any> = snapshot.getValue() as HashMap<String, Any>;
ref.setValue(map);
}