2016-04-05 27 views
1

MEAN uygulamasında bir Kategori ve Alt kategori özelliği oluşturmak istiyorum.Nodejs ve mongodb'de kategori ve alt kategori

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); 

Ürün kategorisi kontrolörü

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; 
     }); 

}); 

ürün kategorisi formu

<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> 

Şimdi benim sorunu göstermek istediğim edilir:

böyle ProductCategoryModel.js için bir model var Yeni açılır menüde seçilen üst kategorinin alt kategorileri, Bunu nasıl yapabilirim, orada olduğunu düşünüyorum Ebeveyn kategorisi açılırken yeni bir açılır menü ve içeriğinin güncellenmesi gerekir.

Ve ikinci sorun, bu satırın bana dönmemesidir. Ebeveyn kategorileri parenteral = null, Tüm kategorilerin listesini döndürür.

return Promise.denodeify(Models.ProductCategoryModel.find.bind(Models.ProductCategoryModel))({ parentID: null }) 
    .then(function (results) { 
     return results; 
    }); 

cevap

0

Böyle bir şey yapabilirsiniz: değiştiğinde

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; 
         }); 
       } 
     }); 
    }); 

$watch sonra productcategory.parentID ve değişiklikler arardım, tüm kategoriler almak için API bir get isteği gönderebilirsiniz parentID belirtilen yer.

Sunucu tarafında, parentid alanına göre tüm kategorileri döndüren bir son nokta oluşturmanız gerekecektir.

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

Bu tamamen size çözüm vermek olmayabilir, ama bu uygulanabilecek bir yaklaşımdır: istek işleyicisi, sen bunu yapabilirsiniz.

+0

Evet, bana yardımcı olacak. –

+0

lütfen [bu] 'ya bakın (http://stackoverflow.com/questions/37121872/search-in-whole-collectionmongodb-using-nodejs) –

İlgili konular