Angularfire:如何将对象推入$ firebaseArray中的另一个对象?

时间:2015-08-15 12:40:25

标签: javascript firebase angularfire

我在firebase中有这个对象:

Groups
    -id1
    name: a

    -id2
    name: b

    -id3
    name: c

我用这种方式使用“群组”:

var ref = new Firebase("https://app.firebaseio.com/Groups");
$scope.groups = $firebaseArray(ref)

$scope.groups.$add({
    "name": "d"
    }).then(function (ref)
    {
        console.log('Added group');
    }, function (error)
    {
        console.error("Error:", error);
    });

其中一些组包含项目。如何添加数组并在其中推送一些项目?如何处理数组已经存在的情况?

这不起作用:

var group = Groups.$getRecord(id3)
if(!group.hasOwnProperty('items')){
    group['items'] = []
}
group['items'].push({item: "an item"})

1 个答案:

答案 0 :(得分:2)

一般情况下,avoid nested arraysflatten data尽可能。

如果多个用户异步更新这些项目,您将遇到冲突和奇怪的行为,因为arrays in distributed data会杀死小猫。

直接在要添加的项目上创建数组,改为使用push id:

var ref = new Firebase("https://app.firebaseio.com/Groups/d/items");
$scope.items = $firebaseArray(ref)
$scope.items.$add({ $value: "an item" });

或者,如果我们要在groups上进行同步并且确实希望每次都将每个更改同步到每个组,那么这将更简单,更好:

new Firebase("https://app.firebaseio.com/Groups/d/items").push("an item");