diff --git a/lib/modules/database/snapshot.js b/lib/modules/database/snapshot.js index bc833a97..eb4ceacf 100644 --- a/lib/modules/database/snapshot.js +++ b/lib/modules/database/snapshot.js @@ -4,6 +4,9 @@ import Reference from './reference.js'; import { isObject, deepGet, deepExists } from './../../utils'; +/** + * @link https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot + */ export default class Snapshot { static key: String; static value: Object; @@ -52,6 +55,7 @@ export default class Snapshot { value, key: childRef.key, exists: value !== null, + // todo this is wrong - child keys needs to be the ordered keys, from FB // todo potential solution is build up a tree/map of a snapshot and its children // todo natively and send that back to JS to be use in this class. @@ -91,33 +95,50 @@ export default class Snapshot { return cancelled; } - getPriority() { + /** + * Gets the priority value of the data in this DataSnapshot. + * @link https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#getPriority + * @returns {String|Number|null} + */ + getPriority(): String|Number|null { return this.priority; } - hasChild(path: string) { + /** + * Returns true if the specified child path has (non-null) data. + * @link https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#hasChild + * @param path + * @returns {Boolean} + */ + hasChild(path: string): Boolean { return deepExists(this.value, path); } - hasChildren() { + /** + * Returns whether or not the DataSnapshot has any non-null child properties. + * @link https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#hasChildren + * @returns {boolean} + */ + hasChildren(): Boolean { return this.numChildren() > 0; } - numChildren() { + /** + * Returns the number of child properties of this DataSnapshot. + * @link https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#numChildren + * @returns {Number} + */ + numChildren(): Number { if (!isObject(this.value)) return 0; return Object.keys(this.value).length; } - /* - * EXTRA API METHODS + /** + * Returns a JSON-serializable representation of this object. + * @link https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#toJSON + * @returns {any} */ - map(fn: (key: string) => mixed) { - const arr = []; - this.forEach((item, i) => arr.push(fn(item, i))); - return arr; - } - - reverseMap(fn: (key: string) => mixed) { - return this.map(fn).reverse(); + toJSON(): any { + return this.val(); } }