我在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"})
答案 0 :(得分:2)
一般情况下,avoid nested arrays和flatten 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");