AngularFire2:查询子项是否存在

时间:2016-11-01 11:19:30

标签: angular firebase 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方式返回整个列表!是否有值可以表示为空值?我试过布尔,空字符串等,但似​​乎没什么用。

也许这是一个错误。

2 个答案:

答案 0 :(得分:1)

问题已通过this pull request修复 - 包含在AngularFire2的2.0.0-beta.7版本中。

问题已通过this pull request修复 - 应该包含在2.0.0-beta.7后面的AngularFire2的已发布版本中。

使用此修复程序,如果您创建这样的查询:

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

它们的行为与您期望的一样,并且仅返回没有read属性的列表项。

答案 1 :(得分:0)

你可以填充"阅读"每个节点的子节点为0(因为您存储时间戳及其整数值)并查询如下内容:

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