【问题标题】:How to Fetch a set of Specific Keys in Firebase?如何在 Firebase 中获取一组特定键?
【发布时间】:2015-07-12 16:45:31
【问题描述】:

假设我只想获取包含密钥的项目:“-Ju2-oZ8sJIES8_shkTv”、“-Ju2-zGVMuX9tMGfySko”和“-Ju202XUwybotkDPloeo”。

var items = new Firebase("https://hello-cambodia.firebaseio.com/items");
items.orderByKey().equalTo("-Ju2-gVQbXNgxMlojo-T").once('value', function(snap1){
    items.orderByKey().equalTo("-Ju2-zGVMuX9tMGfySko").once('value', function(snap2){
        items.orderByKey().equalTo("-Ju202XUwybotkDPloeo").once('value', function(snap3){
            console.log(snap1.val());
            console.log(snap2.val());
            console.log(snap3.val());
        })
    })
});

我不认为这是获取项目的正确方法,尤其是当我有 1000 个密钥可供获取时。

如果可能的话,我真的希望我可以提供一组数组 喜欢

var itemKeys = ["-Ju2-gVQbXNgxMlojo-T","-Ju2-zGVMuX9tMGfySko", "-Ju202XUwybotkDPloeo"];
var items = new Firebase("https://hello-cambodia.firebaseio.com/items");
    items.orderByKey().equalTo(itemKeys).once('value', function(snap){
       console.log(snap.val());
  });

任何建议将不胜感激。

谢谢

【问题讨论】:

标签: angularjs firebase


【解决方案1】:

这样做:

items.orderByKey().equalTo("-Ju2-gVQbXNgxMlojo-T")

给出完全相同的结果:

items.child("-Ju2-gVQbXNgxMlojo-T")

但后者不仅可读性更强,而且还可以避免扫描索引的需要。

但你要回答的是,为什么要选择这三个项目?是因为他们的地位都一样吗?因为它们属于特定的日期范围?因为用户在列表中选择了它们?一旦您可以确定选择这三个项目的原因,您就可以将选择转换为查询。例如

var recentItems = ref.orderByChild("createdTimestamp")
                     .startAt(Date.now() - 24*60*60*1000)
                     .endAt(Date.now());
recentItems.on('child_added'...

如果您有一个带时间戳的字段,此查询将为您提供过去一天的项目。

【讨论】:

    【解决方案2】:

    您可以使用 Firebase 子级。例如,

        var currFirebaseRoom = new Firebase(yourFirebaseURL)
        var userRef = currFirebaseRoom.child('users');
    

    现在您可以使用

    访问这个孩子了
         userRef.on('value', function(userSnapshot) {
              //your code
         }
    

    您通常不应使用 Firebase 密钥访问内容。创建一个名为 data 的子对象并将所有值放在那里,然后您可以通过该子引用访问它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多