2016-11-01 4 views
4

Я планирую получать список из моей базы данных, где определенные записи содержат свойство, которое может быть установлено. Я хочу, чтобы запрашивать и отображать элементы, которые не обладают этим свойствомAngularFire2: запрос, если существует ребенок

{ 
    books: { 
    book_3: { 
    title: "Return of The King" 
    }, 
    book_2: { 
    title: "The Two Towers" 
    }, 
    book_1: { 
    title: "The Fellowship of the Ring" 
    read: 1256953732 
    } 
    } 
} 

Я прочитал первую книгу, и я хочу, чтобы отобразить остальные две книги. В Firebase я:

fbl.child('books').orderByChild('read').equalTo(null).on("value", function(data) { 
// handle data 
} 

И в AngularFire2 я хотел бы сделать что-то вроде:

this.af.database.list('books', { query: { 
    orderByChild: 'read', 
    equalTo: null 
}}); 

Первый способ работы и я получаю book_2, book_3, но путь AngularFire2 возвращает весь список! Есть ли значение, которое может быть указано как нулевое значение? Я пробовал логические, пустые строки и т. Д., Но ничего не работает.

Возможно, это ошибка.

+0

У меня была та же проблема – Bogac

+0

Можно было утверждать, что это ошибка, поскольку [это] (https://github.com/angular/angularfire2/blob/2.0.0-beta.6/src/database/query_observable .ts # L195-L197) - это тест, который применяется к опции «equalTo». Если 'null' - разумное значение, которое полезно в SDK, оно должно действительно игнорироваться только« undefined ». Я бы поднял [вопрос] (https://github.com/angular/angularfire2/issues). – cartant

+0

@cartant issue поднял: [704] (https://github.com/angular/angularfire2/issues/704) – Bogac

ответ

0

Вы можете просто заполнить «чтение» ребенка каждого узла с 0 (как вы сохраняете метку времени и его целое значение) и запросить что-то вроде этого:

af.database.list('books', { query: { 
orderByChild: 'read', 
    equalTo: 0 
    } 
1

Проблема была исправлена с this pull request - который был включен в выпуск 2.0.0-beta.7 AngularFire2.

Проблема была устранена this pull request - которая должна быть включена в опубликованную версию AngularFire2, которая следует за 2.0.0-beta.7.

С исправить, если вы создаете запросы как это:

this.af.database.list('books', { query: { 
    orderByChild: 'read', 
    equalTo: null 
}}); 

Они будут вести себя, как можно было бы ожидать их и возвращать только те элементы списка, которые не имеют read свойства.

+0

произошли какие-то изменения в последнее время, что нарушает это. Я снова получаю полный список, а не с 'null' eleminiation. – Bogac

+0

«null elimination» - неправильный термин, но вы получаете проблему. – Bogac

Смежные вопросы