2017-08-09 2 views
0

je modèle de notification qui ressemble à ceBouclage: Comment ajouter afterRemote d'un modèle à un autre modèle

"use strict"; 

module.exports = function(Notification) { 


}; 

Et j'ai un autre modèle qui est du message:

"use strict"; 

module.exports = function(Post) { 
    Post.prototype.postLike = function(options, cb) { 
      this.likes.add(options.accessToken.userId); 

      cb(null, "sucess"); 
    }; 

    Post.remoteMethod("postLike", { 
    isStatic: false, 
    accepts: [{ arg: "options", type: "object", http: "optionsFromRequest" }], 
    returns: { arg: "name", type: "string" }, 
    http: { path: "/like", verb: "post" } 
    }); 
} 

Ce que je veux est ajouter la méthode afterRemote de Post dans le modèle de notification?

Est-il possible en boucle?

Il devrait ressembler à:

"use strict"; 

module.exports = function(Notification) { 

    var app = require("../../server/server.js"); 
    var post = app.models.Post; 

    post.afterRemote('prototype.postLike', function(context, like, next) { 
    console.log('Notification after save for Like comment'); 
    }); 
}; 

Mais cela ne fonctionne pas.

NOTE: Je peux le faire Post modèle lui-même, mais je veux ajouter toute ma logique de notification dans le modèle de notification pour la simplification et la personnalisation future.

Répondre

2

Vous pouvez utiliser des événements à faire.

application Bouclage émet événement started quand il a commencé après tous les scripts de démarrage chargés here

et Notification modèle comme cela:

"use strict"; 

    module.exports = function(Notification) { 

     var app = require("../../server/server.js"); 

     app.on('started', function(){ 
     var post = app.models.Post; 
     post.afterRemote('prototype.postLike', function(context, like, next) { 
     console.log('Notification after save for Like comment'); 
     }); 
    }); 
    }; 

Ou créer un script de démarrage et émettre un événement personnalisé comme « allModelsLoaded '. Assurez-vous donc que le script de démarrage est le dernier à être exécuté. Les scripts de démarrage s'exécutent par ordre alphabétique par défaut. Donc, faites z.js et émettez cet événement personnalisé, puis écoutez cet événement dans le modèle Notification.

1

Le processus de démarrage de bouclage charge d'abord les modèles, puis appelle les scripts de démarrage une fois que tous les modèles ont été chargés. Si votre objectif est de consolider les choses entre les modèles, il est préférable de le faire dans un script de démarrage, plutôt que dans le fichier model.js.

+0

Je vais vérifier cela. Est-il possible de le faire à l'intérieur du modèle sans script de démarrage? ou quelque chose comme je devrais vérifier après tous mes modèles chargés. –