public class

DatabaseReference

extends Query
java.lang.Object
   ↳ com.google.firebase.database.Query
     ↳ com.google.firebase.database.DatabaseReference

Class Overview

A Firebase reference represents a particular location in your Database and can be used for reading or writing data to that Database location.

This class is the starting point for all Database operations. After you've initialized it with a URL, you can use it to read data, write data, and to create new DatabaseReferences.

Summary

Nested Classes
interface DatabaseReference.CompletionListener This interface is used as a method of being notified when an operation has been acknowledged by the Database servers and can be considered complete 
Public Methods
DatabaseReference child(String pathString)
Get a reference to location relative to this one
boolean equals(Object other)
FirebaseDatabase getDatabase()
Gets the Database instance associated with this reference.
String getKey()
DatabaseReference getParent()
DatabaseReference getRoot()
static void goOffline()
Manually disconnect the Firebase Database client from the server and disable automatic reconnection.
static void goOnline()
Manually reestablish a connection to the Firebase Database server and enable automatic reconnection.
int hashCode()
OnDisconnect onDisconnect()
Provides access to disconnect operations at this location
DatabaseReference push()
Create a reference to an auto-generated child location.
Task<Void> removeValue()
Set the value at this location to 'null'
void removeValue(DatabaseReference.CompletionListener listener)
Set the value at this location to 'null'
void runTransaction(Transaction.Handler handler, boolean fireLocalEvents)
Run a transaction on the data at this location.
void runTransaction(Transaction.Handler handler)
Run a transaction on the data at this location.
void setPriority(Object priority, DatabaseReference.CompletionListener listener)
Set a priority for the data at this Database location.
Task<Void> setPriority(Object priority)
Set a priority for the data at this Database location.
void setValue(Object value, Object priority, DatabaseReference.CompletionListener listener)
Set the data and priority to the given values.
void setValue(Object value, DatabaseReference.CompletionListener listener)
Set the data at this location to the given value.
Task<Void> setValue(Object value, Object priority)
Set the data and priority to the given values.
Task<Void> setValue(Object value)
Set the data at this location to the given value.
String toString()
Task<Void> updateChildren(Map<String, Object> update)
Update the specific child keys to the specified values.
void updateChildren(Map<String, Object> update, DatabaseReference.CompletionListener listener)
Update the specific child keys to the specified values.
[Expand]
Inherited Methods
From class com.google.firebase.database.Query
From class java.lang.Object

Public Methods

public DatabaseReference child (String pathString)

Get a reference to location relative to this one

Parameters
pathString String: The relative path from this reference to the new one that should be created
Returns
DatabaseReference A new DatabaseReference to the given path

public boolean equals (Object other)

Parameters
other Object
Returns
boolean

public FirebaseDatabase getDatabase ()

Gets the Database instance associated with this reference.

Returns
FirebaseDatabase The Database object for this reference.

public String getKey ()

Returns
String The last token in the location pointed to by this reference

public DatabaseReference getParent ()

Returns
DatabaseReference A DatabaseReference to the parent location, or null if this instance references the root location

public DatabaseReference getRoot ()

Returns
DatabaseReference A reference to the root location of this Firebase Database

public static void goOffline ()

Manually disconnect the Firebase Database client from the server and disable automatic reconnection.

Note: Invoking this method will impact all Firebase Database connections.

public static void goOnline ()

Manually reestablish a connection to the Firebase Database server and enable automatic reconnection.

Note: Invoking this method will impact all Firebase Database connections.

public int hashCode ()

Returns
int

public OnDisconnect onDisconnect ()

Provides access to disconnect operations at this location

Returns
OnDisconnect An object for managing disconnect operations at this location

public DatabaseReference push ()

Create a reference to an auto-generated child location. The child key is generated client-side and incorporates an estimate of the server's time for sorting purposes. Locations generated on a single client will be sorted in the order that they are created, and will be sorted approximately in order across all clients.

Returns
DatabaseReference A DatabaseReference pointing to the new location

public Task<Void> removeValue ()

Set the value at this location to 'null'

Returns
Task<Void> The Task for this operation.

public void removeValue (DatabaseReference.CompletionListener listener)

Set the value at this location to 'null'

Parameters
listener DatabaseReference.CompletionListener: A listener that will be triggered when the operation is complete

public void runTransaction (Transaction.Handler handler, boolean fireLocalEvents)

Run a transaction on the data at this location. For more information on running transactions, see Transaction.Handler.

Parameters
handler Transaction.Handler: An object to handle running the transaction
fireLocalEvents boolean: Defaults to true. If set to false, events will only be fired for the final result state of the transaction, and not for any intermediate states

public void runTransaction (Transaction.Handler handler)

Run a transaction on the data at this location. For more information on running transactions, see Transaction.Handler.

Parameters
handler Transaction.Handler: An object to handle running the transaction

public void setPriority (Object priority, DatabaseReference.CompletionListener listener)

Set a priority for the data at this Database location. Priorities can be used to provide a custom ordering for the children at a location (if no priorities are specified, the children are ordered by key).

You cannot set a priority on an empty location. For this reason setValue(data, priority) should be used when setting initial data with a specific priority and setPriority should be used when updating the priority of existing data.

Children are sorted based on this priority using the following rules:

  • Children with no priority come first.
  • Children with a number as their priority come next. They are sorted numerically by priority (small to large).
  • Children with a string as their priority come last. They are sorted lexicographically by priority.
  • Whenever two children have the same priority (including no priority), they are sorted by key. Numeric keys come first (sorted numerically), followed by the remaining keys (sorted lexicographically).
Note that numerical priorities are parsed and ordered as IEEE 754 double-precision floating-point numbers. Keys are always stored as strings and are treated as numeric only when they can be parsed as a 32-bit integer.

Parameters
priority Object: The priority to set at the specified location.
listener DatabaseReference.CompletionListener: A listener that will be triggered with results of the operation

public Task<Void> setPriority (Object priority)

Set a priority for the data at this Database location. Priorities can be used to provide a custom ordering for the children at a location (if no priorities are specified, the children are ordered by key).

You cannot set a priority on an empty location. For this reason setValue(data, priority) should be used when setting initial data with a specific priority and setPriority should be used when updating the priority of existing data.

Children are sorted based on this priority using the following rules:

  • Children with no priority come first.
  • Children with a number as their priority come next. They are sorted numerically by priority (small to large).
  • Children with a string as their priority come last. They are sorted lexicographically by priority.
  • Whenever two children have the same priority (including no priority), they are sorted by key. Numeric keys come first (sorted numerically), followed by the remaining keys (sorted lexicographically).
Note that numerical priorities are parsed and ordered as IEEE 754 double-precision floating-point numbers. Keys are always stored as strings and are treated as numeric only when they can be parsed as a 32-bit integer.

Parameters
priority Object: The priority to set at the specified location.
Returns
Task<Void> The Task for this operation.

public void setValue (Object value, Object priority, DatabaseReference.CompletionListener listener)

Set the data and priority to the given values. The native types accepted by this method for the value correspond to the JSON types:

  • Boolean
  • Long
  • Double
  • Map<String, Object>
  • List<Object>


In addition, you can set instances of your own class into this location, provided they satisfy the following constraints:
  1. The class must have a default constructor that takes no arguments
  2. The class must define public getters for the properties to be assigned. Properties without a public getter will be set to their default value when an instance is deserialized


Generic collections of objects that satisfy the above constraints are also permitted, i.e. Map<String, MyPOJO>, as well as null values.

Parameters
value Object: The value to set at this location
priority Object: The priority to set at this location
listener DatabaseReference.CompletionListener: A listener that will be triggered with the results of the operation

public void setValue (Object value, DatabaseReference.CompletionListener listener)

Set the data at this location to the given value. Passing null to setValue() will delete the data at the specified location. The native types accepted by this method for the value correspond to the JSON types:

  • Boolean
  • Long
  • Double
  • Map<String, Object>
  • List<Object>


In addition, you can set instances of your own class into this location, provided they satisfy the following constraints:
  1. The class must have a default constructor that takes no arguments
  2. The class must define public getters for the properties to be assigned. Properties without a public getter will be set to their default value when an instance is deserialized


Generic collections of objects that satisfy the above constraints are also permitted, i.e. Map<String, MyPOJO>, as well as null values.

Parameters
value Object: The value to set at this location
listener DatabaseReference.CompletionListener: A listener that will be triggered with the results of the operation

public Task<Void> setValue (Object value, Object priority)

Set the data and priority to the given values. Passing null to setValue() will delete the data at the specified location. The native types accepted by this method for the value correspond to the JSON types:

  • Boolean
  • Long
  • Double
  • Map<String, Object>
  • List<Object>


In addition, you can set instances of your own class into this location, provided they satisfy the following constraints:
  1. The class must have a default constructor that takes no arguments
  2. The class must define public getters for the properties to be assigned. Properties without a public getter will be set to their default value when an instance is deserialized


Generic collections of objects that satisfy the above constraints are also permitted, i.e. Map<String, MyPOJO>, as well as null values.

Parameters
value Object: The value to set at this location
priority Object: The priority to set at this location
Returns
Task<Void> The Task for this operation.

public Task<Void> setValue (Object value)

Set the data at this location to the given value. Passing null to setValue() will delete the data at the specified location. The native types accepted by this method for the value correspond to the JSON types:

  • Boolean
  • Long
  • Double
  • Map<String, Object>
  • List<Object>


In addition, you can set instances of your own class into this location, provided they satisfy the following constraints:
  1. The class must have a default constructor that takes no arguments
  2. The class must define public getters for the properties to be assigned. Properties without a public getter will be set to their default value when an instance is deserialized


Generic collections of objects that satisfy the above constraints are also permitted, i.e. Map<String, MyPOJO>, as well as null values.

Parameters
value Object: The value to set at this location
Returns
Task<Void> The Task for this operation.

public String toString ()

Returns
String The full location url for this reference

public Task<Void> updateChildren (Map<String, Object> update)

Update the specific child keys to the specified values. Passing null in a map to updateChildren() will remove the value at the specified location.

Parameters
update Map: The paths to update and their new values
Returns
Task<Void> The Task for this operation.

public void updateChildren (Map<String, Object> update, DatabaseReference.CompletionListener listener)

Update the specific child keys to the specified values. Passing null in a map to updateChildren() will remove the value at the specified location.

Parameters
update Map: The paths to update and their new values
listener DatabaseReference.CompletionListener: A listener that will be triggered with results of the operation