2012-08-15 4 views
0

Je construis une application avec nœud et MongoDB et j'ai un modèle d'entreprise et une API modèle clé qui ressemble à ceci dans Mongoose:Collection en Nested Mongoose avec nœud

var APIKeysSchema = new Schema({ 
    name: { type: String } 
    }); 

    var CompanySchema = new Schema({ 
     name   : {type : String, required: true, index: { unique: true }} 
    , apiKeys   : [ APIKeysSchema ] 
    , created_at  : {type : Date, default : Date.now} 
    }); 

J'aimerais tous les société à avoir par défaut une clé API générée lors de la création de l'entreprise. Dois-je écrire un logiciel personnalisé pour cela, ou y a-t-il un moyen de le faire dans le schéma lui-même? Merci!

+0

Avez-vous essayé d'ajouter un 'défaut:' 'fonction pour apiKeys' qui crée l'entrée par défaut que vous cherchez? – JohnnyHK

+0

Je viens juste d'ajouter un middleware – dshipper

Répondre

0

juste faire Ended comme middleware lors de l'enregistrement dans le modèle:

CompanySchema.pre('save', function(next){ 
    if(this.get('apiKeys').length < 1){ 
     //generate API key 
     var objectId = new ObjectID(); 
     this.get('apiKeys').push({ key: objectId.toHexString() }); 
    } 
    next(); 
    }); 
+0

Cela ne va-t-il pas ajouter une autre entrée à 'apiKeys 'chaque fois que vous sauvegardez le document? – JohnnyHK

+0

Yea ... s'est rendu compte que par la suite. Changé d'ajouter une vérification pour voir si une existe déjà ... – dshipper

Questions connexes