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

3

我有一个问题。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结构本质上就是错误的?

2
嗨,如果你有这个键,你可以像这样访问 ref.child('-KD3pzA_P3pK0TCzg4zw')。如果没有,而你需要通过名称或电子邮件查找,则可以使用 orderBy 和 startAt 和 endAt。如果不清楚,请告诉我,以便扩展答案。希望这有所帮助,问候! - KN_
@KN_ 感谢您的快速回复!不幸的是,当我尝试将其附加到一个模型上(在我的情况下是使用 AngularJS,例如 $scope.contact = Contact.find();),该模型并未显示任何属性... - Abbadiah
2
你想在这里监听哪个唯一的 ID?正如 @KN_ 所说:一旦你知道了唯一的 ID,这就是一个简单的查找:$scope.contact = $firebaseObject(ref.child('-KD3pzA_P3pK0TCzg4zw')) - Frank van Puffelen
@FrankvanPuffelen,事实证明我忘记将child()方法作为$firebaseObject服务的参数放置。现在似乎工作得很好,谢谢! - Abbadiah
1
@Abbadiah。你好!我需要看到整个代码才能给你一个确切的答案,但如果你正在做Frank说的事情,你可能已经在范围内了。请查看此链接(如果您还没有)https://www.firebase.com/docs/web/libraries/angular/guide/synchronized-objects.html,它解释了同步对象。祝好! - KN_
显示剩余5条评论
1个回答

4
如果您有密钥,可以像这样访问 ref.child(id)
正如@FrankvanPuffelen所澄清的那样,然后您可以将其绑定到AngularJS作用域中:
$scope.contact = $firebaseObject(ref.child('-KD3pzA_P3pK0TCzg4zw')); 

如果您还没有密钥,需要按名称或电子邮件查找,则可以使用 orderBystartAtendAt

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接