diff --git a/firebase-query.html b/firebase-query.html
index 2edaf32..beef1cd 100644
--- a/firebase-query.html
+++ b/firebase-query.html
@@ -69,7 +69,7 @@
*/
query: {
type: Object,
- computed: '__computeQuery(ref, orderByChild, orderByValue, limitToFirst, limitToLast, startAt, endAt, equalTo)',
+ computed: '__computeQuery(ref, orderByChild, orderByValue, limitToFirst, limitToLast, startAt, endAt, equalTo, equalToNull)',
observer: '__queryChanged'
},
@@ -127,7 +127,11 @@
type: Object,
value: null
},
-
+ equalToNull: {
+ type: Boolean,
+ reflectToAttribute: true,
+ value: false
+ },
/**
* The maximum number of nodes to include in the query.
*
@@ -240,7 +244,7 @@
}
},
- __computeQuery: function(ref, orderByChild, orderByValue, limitToFirst, limitToLast, startAt, endAt, equalTo) {
+ __computeQuery: function(ref, orderByChild, orderByValue, limitToFirst, limitToLast, startAt, endAt, equalTo, equalToNull) {
if (ref == null) {
return null;
}
@@ -269,7 +273,7 @@
query = query.endAt(endAt);
}
- if (equalTo !== null) {
+ if (equalTo !== null || equalToNull) {
query = query.equalTo(equalTo);
}
@@ -375,7 +379,7 @@
var targetIndex = previousChildKey ? this.__indexFromKey(previousChildKey) : 0;
this._log('Firebase child_moved:', key, value,
- 'to index', targetIndex);
+ 'to index', targetIndex);
if (value) {
var index = this.__indexFromKey(key);
diff --git a/test/firebase-query.html b/test/firebase-query.html
index d946ff0..ca81347 100644
--- a/test/firebase-query.html
+++ b/test/firebase-query.html
@@ -280,6 +280,21 @@
expect(query.data.length).to.be.eql(2);
});
});
+
+ test('should allow an equalTo query with a `null` value to enable query for data without a specific key', function() {
+ query.orderByChild = 'thing';
+ query.equalTo = null;
+ query.equalToNull = true;
+
+ return setFirebaseValue(query.path, {
+ a: {thing: true},
+ b: {thing: false},
+ c: {nothing: false}
+ }).then(function() {
+ expect(query.data[0].$key).to.be.eql('c');
+ expect(query.data.length).to.be.eql(1);
+ });
+ });
});
suite('instance isolation', function() {