-
-
Save katowulf/6099042 to your computer and use it in GitHub Desktop.
function copyFbRecord(oldRef, newRef) { | |
oldRef.once('value', function(snap) { | |
newRef.set( snap.value(), function(error) { | |
if( error && typeof(console) !== 'undefined' && console.error ) { console.error(error); } | |
}); | |
}); | |
} |
function moveFbRecord(oldRef, newRef) { | |
oldRef.once('value', function(snap) { | |
newRef.set( snap.value(), function(error) { | |
if( !error ) { oldRef.remove(); } | |
else if( typeof(console) !== 'undefined' && console.error ) { console.error(error); } | |
}); | |
}); | |
} |
Yes, this works with my version:
function moveFbRecord(oldRef, newRef) {
oldRef.once('value', function(snap) {
newRef.set( snap.val(), function(error) {
if( !error ) { oldRef.remove(); }
else if( typeof(console) !== 'undefined' && console.error ) { console.error(error); }
});
});
}
can i have the java implementation of this? Thanks in advance
Java implementation
public void moveFirebaseRecord(Firebase fromPath, final Firebase toPath)
{
fromPath.addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
toPath.setValue(dataSnapshot.getValue(), new Firebase.CompletionListener()
{
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase)
{
if (firebaseError != null)
{
Timber.d("moveFirebaseRecord() failed. firebaseError = %s", firebaseError);
}
else
{
Timber.d("moveFirebaseRecord() Great success!");
}
}
});
}
@Override
public void onCancelled(FirebaseError firebaseError)
{
Timber.d("moveFirebaseRecord() failed. firebaseError = %s", firebaseError);
}
});
}
Is that Java code a Move or Copy?
It appears to me to be a Copy, as there is no .remove() ?
Are these functions still valid for Firebase 3?
firebase_copy.js
firebase_move.js
This line reminds me of the reason StringUtils was created :)
if( error && typeof(console) !== 'undefined' && console.error ) { console.error(error); }
instead of
newRef.set( snap.val(), function(error) {
you may want to do:
newRef.update( snap.val(), function(error) {
if you want to ADD the data instead of REPLACING all your existing child with the data you want to move.
Any way to easily copy and preserve $priority for each item? Although, I have read somewhere that using $priority is not recommended anymore. However, it's useful for enabling sorting/ordering of key-value pairs in an object that absolutely need both key and value to make references to another object.
Firebase 3.x and Promise version of this.
https://gist.github.com/jofftiquez/f60dc81b39d77cd4eb1f5b5cbe6585ad
I'm looking for a Cloud Firestore version of copy and move. Any ideas?
snap.val() instead of snap.value() might be better in the current version of Firebase.