/ / Como ser notificado sobre alterações externas em uma coleção de mongo com velas? - javascript, mongodb, sails.js

Como ser notificado sobre mudanças externas em uma coleção mongo com velas? - javascript, mongodb, sails.js

Estou desenvolvendo um aplicativo baseado em mongo e velas e estou testando como a atualização em tempo real das velas funciona.

Estou usando velas 0.9.16 agora, mas também estou interessado em respostas sobre velas 0.10.

Quero que uma lista seja atualizada quando novos documentossão criados na coleção correspondente. Isso funciona quando adiciono documentos por meio de sockets, enviando uma mensagem de postagem. Nesse caso, vejo outros clientes recebendo uma mensagem e a lista no lado do cliente é atualizada.

Existe um serviço externo escrevendo no mongobanco de dados resistente, para que a coleção cresça o tempo todo. Os novos elementos criados diretamente pelo serviço externo no banco de dados não são notificados aos clientes que estão ouvindo; portanto, preciso atualizar a página da Web para mostrar esses elementos.

Questões:

  • as notificações sobre criações de banco de dados devem funcionar, quando essas criações não provêm das velas?
  • se sim, isso requer alguma configuração especial?
  • caso contrário, qual seria a maneira recomendada de manter a lista do lado do cliente sobre uma coleção atualizada quando o banco de dados estiver sendo alterado?

Felicidades

Respostas:

3 para resposta № 1

Pergunta muito interessante, embora não incomum: os caras de Meteoro estavam tendo o mesmo problema. Basicamente, sem assistir o banco de dados, você não pode nem dimensionar seu aplicativo horizontalmente, pois um processo do servidor não tem idéia de quais alterações de dados foram feitas por outro.

Então, no começo eles meio que consertaram isso pesquisandoo banco de dados a cada 10 segundos. :) Obviamente, não era a melhor solução, então eles acabaram com outra (que também pode funcionar para o Sails): agora eles estão seguindo o MongoDB oplog e dispare uma atualização sempre que houver uma alteração na coleção correspondente.

Dito isto, para responder às suas perguntas:

  • AFAIK, um processo do Sails não tem idéia sobre alterações externas feitas no banco de dados;
  • então, nada para configurar;
  • uma maneira de rastrear atualizações externas de banco de dados (MongoDB) seria usar um dos observadores de oplog que você pode encontrar no npm (por exemplo, esta ou um dos estes, etc.) para ouvir as alterações e acionar atualizações sempre que necessário.

Infelizmente, não há solução pronta para uso aqui, mas espero que pelo menos agora você tenha uma idéia de como fazê-lo funcionar.