使用AngularFire在firebase中创建关系

时间:2015-09-01 12:08:22

标签: firebase

我正在尝试创建整洁的关系,但我发现在firebase中已经创建的数组上添加一个孩子相当困难。我希望能够轻松地根据另一个数组的$id在子属性中创建数组。

我正在寻找的结构是这样的

foo
  -Jy7ULZGVepTGe2Dp-9Q
    - name: Manages
    - foobar
       - Jy7hbJP1aWWlOSfeXJC : true // this is johns $id
       - Jy7UQms89ycibPxDhMp : true // this is jacks $id

foobar
  - Jy7hbJP1aWWlOSfeXJC
     - name : john
  - Jy7UQms89ycibPxDhMp
     - name : jack

我目前正在做的是

 var foobar = GetObjects.getParentUrl('foobar'); // returns a $firebaseObject

     branches.name = vm.entityChild.name; // This add works
     branches.$add(branches)
        .then(function (data) {
            console.log('success: ' + data)
            var id = data.key(); // returns the id 
            var foo = GetObjects.getParentChildren('foo','foobar');
            var newFoo = foo.child(id);

            newFoo.$save(true);
        })

我收到错误$save is not a function

我不太确定这是否是最好的理由,或者是否有更好的做法来创建“扁平”的火层结构。

1 个答案:

答案 0 :(得分:2)

AngularFire建立在Firebase's JavaScript SDK之上。您只应将AngularFire构造用于绑定到UI的内容。除此之外,请使用常规的Firebase JavaScript SDK。

我猜测GetObjects.getParentChildren('foo','foobar')会返回Firebase object。这是来自Firebase的JavaScript SDK的对象,因此您无法在其上调用AngularFire方法。

相反,您可以调用Firebase JavaScript SDK中的方法,例如:child()https://www.firebase.com/docs/web/api/firebase/set.html

var foo = GetObjects.getParentChildren('foo','foobar');
var newFoo = foo.child(id);

newFoo.set(true);