2016-04-05 14 views
1

MEANアプリケーションでカテゴリとサブカテゴリ機能を構築したいと思います。nodejsとmongodbのカテゴリとサブカタログ

私はこのようなProductCategoryModel.jsのモデルている:今、私の問題は私が見せたい

var mongoose = require('mongoose'); 

var productCategorySchema = mongoose.Schema({ 
    title:{ type:String, required:true }, 
    slug:{ type:String, required:true }, 
    status:{ type:Number, required:true, default:1}, 
    description:{ type:String, required:true }, 
    post_type:{type:String, default:'product_catgory'}, 
    parentID:{ type:mongoose.Schema.Types.ObjectId, ref:'ProductCategory', default:null}, 
}); 
module.exports = mongoose.model('ProductCategory', productCategorySchema); 

商品カテゴリコントローラ

adminApp.controller('ProductCategoryModalInstanceCtrl', function ($scope, productcategory, $http, $uibModalInstance) { 

$scope.productCatList = [];  
return $http.get('/api/product-category/parent-cat-list') 
     .then(function (result) { 
     $scope.productCatList = result.data; 
     }); 

}); 

製品カテゴリフォーム

<div class="form-group" ng-class="{ 'has-error' : productCategoryForm.parentID.$invalid && !productCategoryForm.parentID.$pristine }"> 
<label>Parent Category</label> 
<select name="parentID" class="form-control" id="parentID" ng-model="productcategory.parentID"> 
    <option ng-repeat="category in productCatList" value="{{category._id}}"> 
    {{category.title}}</option> 
</select> 
</div> 

です新しいプルダウンで選択した親カテゴリのサブカテゴリ、どのようにこれを行うことができます、私はそこにいると思います新たなドロップダウンを行い、親カテゴリのドロップダウンを変更したときにコンテンツを更新する必要があります。

2番目の問題は私を返さないコード行です。parentID = nullの親カテゴリ、すべてのカテゴリのリストを返します。

あなたはこのような何か行うことができます
return Promise.denodeify(Models.ProductCategoryModel.find.bind(Models.ProductCategoryModel))({ parentID: null }) 
    .then(function (results) { 
     return results; 
    }); 

答えて

0

adminApp.controller('ProductCategoryModalInstanceCtrl', function ($scope, productcategory, $http, $uibModalInstance) { 
     $scope.productCatList = []; 
     return $http.get('/api/product-category/parent-cat-list') 
        .then(function (result) { 
          $scope.productCatList = result.data; 
         }); 

     $scope.$watch('productcategory.parentID', function(newValue, oldValue, scope) { 
       if(newValue != oldValue){ 
        $http.get('/api/product-category/' + $scope.productcategory.parentID) 
         .then(function (result) { 
           $scope.productSubCatList = result.data; 
         }); 
       } 
     }); 
    }); 

$watchproductcategory.parentIDへの変更のためになり、それが変化した場合、その後、あなたはすべてのカテゴリを取得するAPIにGETリクエストを送信することができますparentIDは指定されたものです。

parentIDフィールドに基づいてすべてのカテゴリを返すエンドポイントを作成する必要があります。

Product.find({parentID: req.params.parentID}, function(err, categories){ 
    if(err) console.log("Error: " + JSON.stringify(err)); 
    else if(categories) res.json(200, categories); 
}); 

これは完全にあなたに解決策を与えていない可能性がありますが、これは続くことができたアプローチです:要求ハンドラでは、あなたがこれを行うことができます。

+0

よろしくお願いします。 –

+0

pls [this](http://stackoverflow.com/questions/37121872/search-in-whole-collectionmongodb-using-nodejs)をご覧ください。 –

関連する問題