我有一个问题。 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结构本身就是错误的?
答案 0 :(得分:4)
如果您有密钥,则可以像ref.child(id)
一样访问。
正如@FrankvanPuffelen澄清的那样,然后将其绑定到您的AngularJS范围:
$scope.contact = $firebaseObject(ref.child('-KD3pzA_P3pK0TCzg4zw'));
如果您还没有密钥,并且需要按名称或电子邮件查找,那么您可以使用orderBy
和startAt
以及endAt
:
ref.orderByChild('phone').startAt('01239485764').endAt('01239485764');