J'essaye de construire mon modèle de listes d'une manière où il restreint les utilisateurs à sélectionner seulement une sous-catégorie si elle existe dans la liste de tableau parent. Je peux le faire lorsque je construis bien le point final de l'API, mais je voulais voir s'il était possible de le faire dans le modèle lui-même.Définir Enum Array basé sur un autre tableau Enum dans le même modèle - Mongoose
voici un exemple:
Si (un utilisateur sélectionne des ménages de catégorie parente du tableau de la catégorie ENUM mère) .alors (matricielleEnsemble ENUM en fonction de la catégorie parente)
Code de référence:
Modèle:
var categories = require(settings.PROJECT_DIR + 'controllers/data/categories');
var ListingSchema = mongoose.Schema({
data: {
category: {
parent: {
type: String,
enum: categories.parent(),
required: true
},
sub: {
type: String,
enum: categories.sub("household"), // should be this.data.category.parent instead of hard coded value
required: true
}
},
}
}
Array Catégories:
module.exports.categories = [
{ "household" : ["repair", "carpentry", "housecleaning", "electrical", "handymen", "movers", "plumbing", "gardening/pool"] },
{ "automotive" : ["autobody", "mechanics", "towing"] },
{ "creative" : ["art", "cooking", "film", "graphic_design", "marketing", "music", "writing"] },
{ "tech" : ["tech", "repair", "web_design", "web_development"] },
{ "events" : ["artist", "florist", "musician", "photography", "planning", "venue"] },
{ "legal" : ["accounting", "advising", "investments", "consulting", "real_estate"] },
{ "health" : ["beauty", "fitness", "nutrition", "therapeutic"] },
{ "pets" : ["grooming", "sitter", "trainer", "walker"] }
];
// @returns parent categories
module.exports.parent = function() {
var self = this;
var parentCategories = [];
for(var i in self.categories) {
parentCategories.push(Object.keys(self.categories[i])[0]);
}
return parentCategories;
}
// @returns sub categories based of parent input
module.exports.sub = function(parent) {
var self = this;
var subCategories = [];
for(var i in self.categories) {
if(self.categories[i][parent]) {
return self.categories[i][parent];
}
}
}
Je vois. Oui, j'ai fait la restriction par le biais de middleware en express à la place. – Shivam
Autre chose que vous devez savoir? –