2017-10-16 2 views
0

En regardant un peu les docs de plumes j'ai compris que c'est basé sur les services et les hooks et que les services offrent également une synchronisation en temps réel entre le serveur et le client. Tant que les choses sont simples, comme dans les documents que je comprends, un service généré, puis l'ajout/l'enregistrement/la mise à jour en utilisant les méthodes de service déclenchera l'événement.Feathers.js et travaux d'arrière-plan, comment déclencher l'événement de service (ou clients de mise à jour en temps réel)

Mon scénario est un peu différent:

  • Le critère d'évaluation de l'API ne retourne pas d'informations à partir d'une table, mais des requêtes complexes basée sur plusieurs tables
  • je dois avoir des travailleurs de base qui font des opérations sur la base de données, probablement en utilisant Kue (s'il n'y a pas de meilleur moyen à l'intérieur des plumes), lorsqu'un travailleur termine le travail, j'ai besoin d'un moyen de déclencher le service API afin qu'il mette à jour les clients avec les nouvelles données.

Comment est-ce que je peux faire ceci dans des plumes?

Répondre

0

Les deux scénarios peuvent être traités avec des plumes comme ceci:

services Plumes ne pas doivent être liées à une table. Vous pouvez implémenter un custom service comme vous le feriez dans n'importe quel autre framework (contrôleur). Il n'est pas rare de créer des services de tableau de bord qui agrège différents appels de service ou utilise service.Model pour accéder au ORM que vous utilisez directement:

class MyService { 
    find(params) { 
    const userModel = this.app.service('users').Model; 
    const invoiceModel = this.app.service('invoices').Model; 

    return userModel.doSomething() 
     .then(data => invoiceModel.doSomethingElse()); 
    } 

    setup(app, path) { 
    this.app = app; 
    } 
} 

travailleurs Contexte devraient également être en utilisant l'API de plumes (dans le nœud ce qui peut être fait soit en utilisant l'application directement via const app = require('./src/app') ou en se connectant de manière transparente via Feathers as the client) afin que tous les clients connectés obtiennent des mises à jour automatiquement. Ensuite, il ne devrait pas être nécessaire de déclencher des événements manuellement (ce qui vient avec des mises en garde comme devoir également exécuter vos données brutes à travers les crochets qui changent les données).