2013-06-02 31 views
4

我在Firebase的博客上看到了this post,解释了使用他们的平台创建关系数据对象的最佳方式。我正在努力将这些概念转化为与AngularJS平台集成的AngularFire。使用AngularFire,可以创建关系型数据库吗?或者访问UniqueIDs?

具体来说,我想显示具有相似的他们是如何描述它在这个例子中,从他们的岗位单向指针引用关联的数据集:

var commentsRef = new Firebase("https://awesome.firebaseio-demo.com/comments"); 
var linkCommentsRef = new Firebase("https://awesome.firebaseio-demo.com/links/comments"); 

linkCommentsRef.on("child_added", function(snap) { 
    commentsRef.child(snap.name()).once("value", function() { 
     // Render the comment on the link page. 
    )); 
}); 

问:是否有可能与当前的AngularFile集成,以指向其他数据对象的指针式引用?如果是这样,你能提供一个例子吗?

编辑:我觉得我能解决这些问题,如果我可以访问由AngularFire我的数据生成的唯一ID [见下文]。我如何访问它们?

enter image description here

回答

1

大问题!

您确实需要访问唯一ID,并且我们最近添加了一项功能,通过angularFireCollection可以访问它:https://github.com/firebase/angularFire/pull/26

如果您使用隐式同步方法(angularFire),那么你已经有了访问密钥,只要你指定将收集的类型设置为“object”的第四个参数:

function MyController($scope, angularFire) { 
    var url = 'https://awesome.firebaseio-demo.com/comments'; 
    var promise = angularFire(url, $scope, 'comments', {}); 
    promise.then(function() { 
    var id = '-lw2NDTiZMFvzEWmSnYn'; 
    console.log($scope.comments[id]); 
    }); 
} 

希望这有助于!

+0

我怎么能如。使用'angularFire()'添加注释? – Voles

+16

我不明白这是如何回答这个问题的。您只需将id设置为文字字符串。你如何从数据库中获得实际的ID? –

+0

您迭代JS对象'$ scope.comments'来检索ID。你也可以调用'Object.keys($ scope.comments)'来获得一个只有ID的数组。 – Anant

0

是的,你可以访问该ID!使用下面的代码!

var chru; 
var ref = new Firebase("https://myapp.firebaseio.com/users/"); 
var sync = $firebase(ref); 
var users= syncSelect.$asArray(); 
$scope.users= users; 
users.$loaded().then(function() { 
    chru = users.length; 
}); 

$scope.specificIdOnSelect = function() { 
    var jj; 
    for (jj = 0; jj < chru; jj++) { 
     var keyer = users.$keyAt(jj); 
     var rec = users.$getRecord(keyer); 

     if ($scope.userSelected== rec.name) { 
      alert("Unique Key of " + $scope.users+ " is " + users.$keyAt(jj)); 
     } 
    } 
}; 

$scope.allIds = function() { 
    var jj; 
    for (jj = 0; jj < chru; jj++) { 
     var keyer = users.$keyAt(jj); 
     var rec = users.$getRecord(keyer); 
     alert("Unique Key of " + $scope.users+ " is " + users.$keyAt(jj)); 
    } 
}; 
相关问题