/ / Come ricevere notifiche sulle modifiche esterne in una collezione mongo con le vele? - javascript, mongodb, sails.js

Come ricevere notifiche sulle modifiche esterne in una collezione di mongo con le vele? - javascript, mongodb, sails.js

Sto sviluppando un'applicazione basata su mongo e vele e sto testando il funzionamento dell'aggiornamento in tempo reale delle vele.

Sto usando le vele 0.9.16 ora, ma sono interessato anche alle risposte sulle vele 0.10.

Voglio un elenco da aggiornare quando nuovi documentivengono creati nella raccolta corrispondente. Questo funziona quando aggiungo documenti tramite prese di vele, inviando un messaggio postale. In tal caso vedo altri client che ricevono un messaggio e l'elenco sul lato client viene aggiornato.

C'è un servizio esterno che scrive sul mongodatabase difficile, quindi la raccolta è in continua crescita. I nuovi elementi creati direttamente dal servizio esterno nel database non vengono notificati ai client in ascolto, quindi devo aggiornare la pagina Web per mostrare tali elementi.

Domande:

  • le notifiche sulle creazioni del database dovrebbero funzionare, quando quelle creazioni non provengono dalle vele stesse?
  • se sì, questo richiede una configurazione speciale?
  • in caso contrario, quale sarebbe un modo consigliato per mantenere aggiornato l'elenco client su una raccolta quando il database sta cambiando?

Saluti

risposte:

3 per risposta № 1

Domanda molto interessante, anche se non insolita: i ragazzi di Meteora stavano avendo lo stesso problema. Fondamentalmente, senza guardare il DB non è nemmeno possibile ridimensionare l'app in orizzontale, poiché un processo del server non avrà idea di quali modifiche ai dati sono state apportate da un altro.

Quindi, all'inizio hanno risolto il problema con il pollingil DB ogni 10 secondi. :) Ovviamente, non era la soluzione migliore, quindi hanno finito con un altro (che può funzionare anche per Sails): ora stanno seguendo il MongoDB oplog e attiva un aggiornamento ogni volta che c'è un cambiamento nella raccolta corrispondente.

Detto questo, per rispondere alle tue domande:

  • AFAIK, un processo Sails non ha idea di eventuali modifiche esterne apportate al DB;
  • quindi, nulla da configurare;
  • un modo per tenere traccia degli aggiornamenti di DB esterni (MongoDB) sarebbe quello di utilizzare uno degli osservatori di oplog che puoi trovare in npm (ad es. Questo o uno di queste, ecc.) per ascoltare le modifiche e attivare gli aggiornamenti ogni volta che è necessario.

Sfortunatamente, nessuna soluzione pronta per l'uso qui, ma spero almeno che ora tu abbia un'idea su come farlo funzionare.