如何在Firebase set()函数中将数组推入json对象?

时间:2017-08-16 18:52:17

标签: javascript angularjs firebase firebase-storage jsobject

我想将新项目推送到我的firebase数据库。

Json对象应如下所示:

var newItem = {
            'address': "Кабанбай батыр, 53",
            'cityId': 1,
            'courierName': "Максат",
            'dispatcherId': "somedispatcherId",
            'info': "привезти к 2ому подъезу в 11 ч вечера", 
            'isCompleted': 0,
            'isProceeded': 0, 
            'name': "Адиль Жалелов" ,
            'paymentMethod': "наличка" ,
            'phone': "87775634456" ,
            'price': 5000,
            'products': []
        }

问题是我无法将对象数组( $ scope.orders )推送到 newItem

我试图推动这个$ scope.orders:

   $scope.addOrder = function(){
        var orderRef = 
        firebase.database().ref().child('Orders').child('Astana');
        var newOrderKey = orderRef.push().key;
        var newJson = {
            'address': "Кабанбай батыр, 53",
            'cityId': 1,
            'courierName': "Максат",
            'dispatcherId': "somedispatcherId",
            'info': "привезти к 2ому подъезу в 11 ч вечера", 
            'isCompleted': 0,
            'isProceeded': 0, 
            'name': "Адиль Жалелов" ,
            'paymentMethod': "наличка" ,
            'phone': "87775634456" ,
            'price': 5000,
            'products': []
        };
         newJson['products'].push( $scope.orders);
        /*for (var i =0; i < $scope.orders.length ; i++){
            newJson['products'].push( $scope.orders[0]);
        } */

        console.log($scope.orders,newJson)
        orderRef.child(newOrderKey).set(newJson); 
    } 

但是我得到了错误: Reference.set失败:第一个参数在属性中包含无效键($$ hashKey)....

如果console.log($ scope.orders)则获取

xcxx

任何可以提供帮助的人?

提前感谢!

1 个答案:

答案 0 :(得分:2)

在Firebase中,Push方法使用唯一键生成新的子位置,并返回其Reference。所以你已经有孩子和你孩子的参考。您不需要像您尝试的那样在订单中添加孩子。

你可以做到这一点

var newOrderKey = orderRef.push();  // Return the ref of the futur child
newOrderKey.set(newJson); 

还有一个问题来自角度,&#39; $&#39; in&#39; $$ hashKey&#39;是问题。 Angular创建$$ hashKey属性。

这应解决问题

newJson['products'].push( angular.fromJson(angular.toJson($scope.orders)));