Как вставить массив в объект json в функции Firebase set()?

Я хочу добавить новый элемент в свою базу данных 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

Любой, кто может помочь?

заранее спасибо!


person Aralbay Issatayev    schedule 16.08.2017    source источник
comment
Ошибка, которую вы имеете, не связана с методом push. Речь идет о наборе. Можете ли вы добавить код, где у вас есть orderRef и newOrderKey, пожалуйста? Похоже, newOrderKey недействителен   -  person Gabriel Diez    schedule 16.08.2017
comment
@GabrielDiez проверить) Я думаю, что все в порядке с orderRef и OrderKey, потому что, когда я устанавливаю объект json без свойства products, он работает нормально   -  person Aralbay Issatayev    schedule 16.08.2017


Ответы (1)


В Firebase метод Push создает новое дочернее местоположение с использованием уникального ключа и возвращает его ссылку. Итак, у вас уже есть ребенок и ссылка вашего ребенка. Вам не нужно добавлять дочерний элемент в ваш orderRef, как вы пытались.

Вы можете просто сделать это

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

Также есть проблема с объектом из angular, проблема заключается в "$" в "$$hashKey". Angular создает свойства $$hashKey.

Это должно решить проблему

newJson['products'].push( angular.fromJson(angular.toJson($scope.orders))); 
person Gabriel Diez    schedule 16.08.2017
comment
спасибо за ответ, но также выдает ошибку: Ошибка Reference.set: первый аргумент содержит недопустимый ключ ($$hashKey) в свойстве.... - person Aralbay Issatayev; 16.08.2017
comment
попробуйте этот newJson['products'].push(angular.fromJson(angular.toJson($scope.orders))); Когда вы пытаетесь вывести порядок из области видимости - person Gabriel Diez; 17.08.2017
comment
О, спасибо, чувак! angular.fromJson(angular.toJson($scope.orders)) сделал свое дело - person Aralbay Issatayev; 17.08.2017