通过它在Firebase中的唯一ID来查找对象

时间:2016-03-17 17:42:04

标签: javascript angularjs json firebase

我有一个问题。 Firebase似乎为使用push()方法创建的对象生成唯一的id。虽然这很棒,但官方教程似乎省略了一个简单的问题,即如何根据它的唯一ID 检索这样的对象。

{
  "contacts" : {
    "-KD3p6kdEUbg38X7Osfm" : {
    "address" : "Whitley rd 22, Northampton",
    "email" : "somethingsatsomething@soso",
    "name" : "George Booney",
    "notes" : "Sounds like a serious businessman",
    "phone" : "01239485764",
    "website" : "http://www.workingatthepumps.com"
 },
   "-KD3pzA_P3pK0TCzg4zw" : {
    "address" : "Common Avenue 22, Birmingham",
    "email" : "johnyoeias@nowhereas.com",
    "name" : "John Doe",
    "notes" : "Sounds like a serious businessman",
    "phone" : "44582314864",
    "website" : "http://www.wearelost.com"
}
}
}

调用它的代码如下所示:

var ref = new Firebase("https://contactsmgr.firebaseIO.com/contacts");

        return {
            get: function() {
             return ref;   
            },
            find: function() {
            // the required code to refer to the unique id
            }
        };

是否有一种简单的方法可以做到这一点,或者我创建的JSON结构本身就是错误的?

1 个答案:

答案 0 :(得分:4)

如果您有密钥,则可以像ref.child(id)一样访问。

正如@FrankvanPuffelen澄清的那样,然后将其绑定到您的AngularJS范围:

$scope.contact = $firebaseObject(ref.child('-KD3pzA_P3pK0TCzg4zw')); 

如果您还没有密钥,并且需要按名称或电子邮件查找,那么您可以使用orderBystartAt以及endAt

ref.orderByChild('phone').startAt('01239485764').endAt('01239485764');