Partage
  • Partager sur Facebook
  • Partager sur Twitter

[nodejs] Ajout d'attribut sur fonction find

Ajouter des éléments d'un autre schéma lors d'une recherche

Anonyme
    12 octobre 2018 à 12:53:49

    Bonjour,

    j'ai trois schémas, events, tags et un schéma pivot eventsTags.

    Donc, dans le cas où 'event1' est lié à 'tag1' et 'tag2', on aura :

    |  Events  |  EventsTags  |  Tags  |

    | event1   | event1+tag1  | tag1    |

    |               | event1+tag2  | tag2    |

    Lorsque je fait un find sur le schéma events j'aimerai récupérer la liste de tags qui lui sont liés depuis le shcéma eventsTags

    Voici mes trois schémas

    Events

    'use strict';
    
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var EventSchema = new Schema({
        title: {
            type: String,
            required: true
        },
        category: {
            type: Schema.Types.ObjectId,
            ref: 'Category',
            required: true
        }
    });
    
    // Ajout les informations des schémas liés
    var autoPopulateEvent = function (next) {
        this.populate({ path: 'category', select: '-__v' });
    
        next();
    }
    
    // Appel de la fonction autoPopulateEvent
    EventSchema.
        pre('find', autoPopulateEvent).
        pre('findOne', autoPopulateEvent);
    
    
    module.exports = mongoose.model('Event', EventSchema);

    Tags

    'use strict';
    
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var TagsSchema = new Schema({
        tagName : String
    });
    
    module.exports = mongoose.model('Tag', TagsSchema);

    EventsTags

    'use strict';
    
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var EventsTagsSchema = new Schema({
        event: {
            type: Schema.Types.ObjectId,
            ref: 'Event'
        },
        tag: { 
            type: Schema.Types.ObjectId,
            ref: 'Tag'
        },
        createDate: {
            type: Date,
            default: Date.now
        },
        updateDate: Date
    });
    
    module.exports = mongoose.model('EventsTags', EventsTagsSchema);


    J'ai essayé de passer par l’agrégation et la fonction virtual dans le schéma Events. J'ai essayer d'ajouter les tags à la volé dans la fonction find mon controller Events, mais bien sur, les events sont renvoyé avant de récupérer les tags. Du coup je bloque.

    Est-ce que quelqu'un pourrait m'éclairer sur la façon d'attacher mes tags à mes events ?

    • Partager sur Facebook
    • Partager sur Twitter

    [nodejs] Ajout d'attribut sur fonction find

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown