如何在我的Firebase数据库中保存嵌套对象

时间:2016-11-27 20:19:07

标签: angularjs firebase firebase-realtime-database angularfire

我创建了一个用于添加类别和产品视图的视图。我想将产品添加到类别中。这是有效的,但它可能更有效,让它像下面的结构,而不是我在截图中得到的。

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

这种结构会更好吗?我应该如何实施呢?我期待整个cat对象被传入,因为我正在引用product.cat作为模型。

如果我将表单元素中的value设置为{{cat}},我会在数据库中找到它:

"{\"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

1 个答案:

答案 0 :(得分: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