我正在尝试创建整洁的关系,但我发现在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
我不太确定这是否是最好的理由,或者是否有更好的做法来创建“扁平”的火层结构。
答案 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);