2016-11-27 105 views
0

我已创建一个视图,用于为产品添加类别和视图。我想添加产品到类别。这是行得通的,但它可能会更有效地让它像下面的结构,而不是我在截图中得到的。如何在我的Firebase数据库中保存嵌套对象

products 
    - KXbMe8zo14TyOYDJh4q 
      cat: { 
       id: "-KXXJY-i7Avnqw8IMqR", name: "Starters" 
       } 

这个结构会更好吗?我该如何实现它?我期待整个cat对象被传入,因为我参照product.cat作为模型。

如果我在表单元素设置value{{cat}}我得到这个在DB:

"{\"name\":\"Kebabs\",\"$id\":\"-KXXJl0Ice17zDIYF_Xt\",\"$priority\":null}"

这是否看其是否正确?

<select ng-model="product.cat"> 
    <option ng-repeat="cat in cats" value="{{cat.$id}}">{{cat.name}}</option> 
</select> 

我检索类别,像这样:

var cats = $firebaseArray(firebase.database().ref('category')); 
cats.$loaded().then(function(){ 
        $scope.cats = cats; 
       }); 

enter image description here

回答

0

我已经结束了以下内容:

var cats = $firebaseArray(firebase.database().ref('category')); 
cats.$loaded().then(function(){ 
        $scope.cats = cats; 
       }); 

    $scope.addProduct = function() { 
    console.log($scope.product); 
    var category = {}; 

    for(var i=0; i<$scope.cats.length; i++){ 
     if($scope.cats[i].$id == $scope.product.catid){ 
      category.id = $scope.cats[i].$id; 
      category.name = $scope.cats[i].name; 
     } 
    } 

    //var record = firebase.database().ref().child('products/category').push($scope.product.cat); 
    //var record = firebase.database().ref().child('products').push($scope.product); 
    var record = firebase.database().ref().child('products').push({ 
      'category' : {id: category.id, name: category.name}, 
      'name' : $scope.product.name, 
      'price' : $scope.product.price 
     }); 
    if(record.key){ 
     $scope.productSuccess = true; 
    } else { 
     $scope.productSuccess = false; 
    } 
    }; 

这使我在下面我的DB:

enter image description here