我有一个X DB,其中包含公司类别,我想获取分类的子项并将副本发送给AllEmpresas
我的火力棒 https://i.imgur.com/YDhHn6X.jpg
我使用此代码但我不知道如何实施
private void copyRecord(DatabaseReference fromPath, final DatabaseReference toPath) {
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
toPath.setValue(dataSnapshot.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isComplete()) {
Log.d(TAG, "Success!");
} else {
Log.d(TAG, "Copy failed!");
}
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
fromPath.addListenerForSingleValueEvent(valueEventListener);
}
答案 0 :(得分:0)
一旦实现,您的代码将导致一个无限循环。这是正确运行的正确方法。
private void copyRecord(DatabaseReference fromPath, final DatabaseReference toPath) {
fromPath.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
toPath.setValue(dataSnapshot.getValue().toString()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "Success!");
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
答案 1 :(得分:0)
更好的方法
我选择使用Cloud Function,效果很好!
感谢大家的支持。
const functions = require('firebase-functions');
const admin = require('firebase-admin'); //Importar o Admin SDK para escrever dados na database
admin.initializeApp(functions.config().firebase);
exports.copiarEmpresas = functions.database.ref('/Categorias/{categoria}/{empresa}')
.onWrite((change, context) => {
var snapshot = change.after;
return admin.database().ref('AllEmpresas').child(snapshot.key).set(snapshot.val());
});