错误:Reference.push失败:第一个参数包含属性中的函数 - firebase

问题描述:

我试图将值推入我的firebase数据库。当我尝试推送值时,它在控制台中给我一个错误(错误:Reference.push失败:第一个参数在属性中包含一个函数)。我在firebase上查了一下,发现这是因为一个功能被推动,但我根本没有推动任何功能。但我有一种感觉,这可能是由于datetimepicker。需要帮忙!错误:Reference.push失败:第一个参数包含属性中的函数 - firebase

MY JS

/*global angular*/ 
var app = angular.module('downtime', ['ngRoute', 'firebase']); 

app.config(['$routeProvider', function ($routeProvider) { 
    'use strict'; 
    $routeProvider.when('/downtime', { 
     templateUrl: 'downtime/downtime.html', 
     controller: 'downtimeCtrl' 
    }); 
}]); 

app.controller('downtimeCtrl', ['$scope', '$firebaseObject', '$firebaseArray', function ($scope, $firebaseObject, $firebaseArray) { 
    'use strict'; 

    $scope.allEquipments = []; 
    $scope.allSystems = []; 

    $scope.manageDowntime = function() { 

     var doesExist = false; 
     angular.forEach ($scope.data , function (d) { 
     angular.forEach (d.equipments, function (e) { 
     }) 
    }); 
     firebase.database().ref('downtime/' + $scope.equipment + '/downtime').push({ 
      equipment: $scope.equipment, 
      type : $scope.type, 
      start: $scope.startDT, 
      end: $scope.endDT 
     }); 
}; 

    var ref = firebase.database().ref(); 
     var data = ref.child("data"); 
     var list = $firebaseArray(data); 

     list.$loaded().then(function(data) { 
      $scope.data = data; 
      angular.forEach ($scope.data , function (d) { 

       $scope.allSystems.push(d.$id); 

       angular.forEach (d.equipments, function (e) { 
        $scope.allEquipments.push(e.equipment); 
        console.log($scope.allEquipments); 
       }) 
      }); 
      console.log($scope.data); 
     }).catch(function(error) { 
      $scope.error = error; 
     }); 

    $('#datetimepicker1').datetimepicker(); 
    $('#datetimepicker2').datetimepicker(); 

}]); 

app.directive('customzdatetime', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModelCtrl) { 
      element.datetimepicker({ 
       debug: false, 
       format: 'DD-MM-YYYY hh:mm' 
      }).on('dp.change', function (e) { 
       ngModelCtrl.$setViewValue(e.date); 
       scope.$apply(); 
      }); 
     } 
    }; 
}); 

我的HTML

<div class="page-header"> 
    <h1>MANAGE DOWNTIME </h1> 
</div> 
<div data-ng-app="downtime"> 

<div class="row"> 
    <div class="col-xs-12"> 

    <div class="form-group col-xs-6 col-xs-offset-3" id="equipList"> 
     <label for="selectequ">Select Equipment</label> 
     <select class="form-control" id="selectequ" data-ng-model="equipment" 
      > 
     <option data-ng-repeat="eq in allEquipments" >{{eq}}</option> 
     </select> 

     {{equipment}} 
    </div> 

     <div class="form-group col-xs-6 col-sm-6 col-md-6 col-lg-6 col-xs-offset-3" id="Type"> 
     <label for="searchType">Search by Type:</label> 
     <select class="form-control" id="searchType" data-ng-model="type"> 
      <option value="" disabled="" selected="" style="display: none">Select type of maintenance</option> 
      <option>Corrective Maintenance</option> 
      <option>Preventive Maintenance</option> 
      <option>Standby</option> 
     </select> 
     </div> 

     {{type}} 

    </div> 
</div> 

<div class="row"> 

    <div class="form-group col-xs-6 col-xs-offset-3"> 
     <label for="date">Start of Downtime</label> 
<!--  <input type="datetime-local" id="datetimepicker1" class="form-control" placeholder="Day, Month, Year" data-ng-model="startDT"/>--> 

       <input type="text" class="form-control" placeholder="Day, Month, Year" data-ng-model="startDT" customzdatetime /> 
    </div> 
     {{startDT}} 
    <div class="form-group col-xs-6 col-xs-offset-3"> 
     <label for="date">End of Downtime</label> 
     <input type="text" class="form-control" placeholder="Day, Month, Year" data-ng-model="endDT" customzdatetime/> 
     {{endDT}} 
    </div> 



    </div> 

<div class="row"> 
     <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6" id="central"> 
      <a class="btn cd-add-to-cart cd-add-to-cart:hover cd-add-to-cart:active" role="button" data-ng-click="manageDowntime()">MANAGE <span class="glyphicon glyphicon-tasks"></span></a> 
     </div> 
    </div> 

</div> 

enter image description here

火力不会接受日期作为数据类型,尝试将它们转换为字符串或数字,然后尝试推入到火力基地。我希望你的问题是$ scope.startDT,因为它包含了一些函数,你试图直接使用它,这就是为什么它会抛出一个错误,尝试将它们转换为字符串或数字,然后尝试推送。

firebase.database().ref('downtime/' + $scope.equipment + '/downtime').push({ 
     equipment: $scope.equipment, 
     type : $scope.type, 
     start: new Date($scope.startDT).toLocaleString(), 
     end: new Date($scope.endDT).toLocaleString() 
     or 
     start: new Date($scope.startDT).getTime(), //this will get you unix timestamp as number 
     end: new Date($scope.endDT).getTime() 
    });