MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Szablon MeteorJS nie pokazuje danych, nie pojawia się

W tym przypadku chodzi głównie o niezrozumienie modelu danych Meteora.

Chociaż możliwe jest wysyłanie danych za pomocą wywołania metody, zwykle będziesz chciał użyć publikacji i subskrypcji do przesyłania danych do klienta. Mają one niemal magiczną właściwość, ponieważ zapytania są aktywne - czyli wszelkie aktualizacje zapytania zostaną automatycznie wysłane do klienta. Obecny kod, który masz, gdyby działał poprawnie, nie miałby danych na żywo. Specyficzny problem polega na tym, że Meteor.call jest asynchroniczny, więc pomocnik wiadomości nic nie zobaczy.

Oto, co chcesz zrobić. Na serwerze skonfigurujesz publikację kolekcji wiadomości:

Meteor.publish("someWeirdName", function() {
  return Messages.find({},{ sort: { timestamp:-1}, limit: 20});
});

Zwróć uwagę na różnice w kodzie:nie ma fetch() , ponieważ chcemy aktywnego kursora i 20 jest prawdopodobnie tym, co zamierzałeś jako opcję limitu. Zauważ, że nazwałem to również someWeirdName bo tak nazywa się publikacja , a nie kolekcję, której będziesz używać do subskrybowania na kliencie. Bardziej szczegółowe wyjaśnienie znajdziesz ten post .

Następnie na kliencie potrzebujesz po prostu:

Meteor.subscribe("someWeirdName");

Template.messages.helpers({
    showMessages: function(){
        return Messages.find();
    }
});

Zauważ, że poprzednie wywołanie Meteor.subscribe("Messages") nic nie robił, ponieważ nie było publikacji o nazwie Messages . Ponadto użyjemy pamięci podręcznej wiadomości po stronie klienta, aby utworzyć kursor do wyświetlania wiadomości.

Ponadto cały ten kod wymaga, aby zadeklarować następujące elementy zarówno na serwerze, jak i na kliencie:

Messages = new Mongo.Collection("callMeWhateverYouWant");

Zauważ również, że argument użyty do utworzenia instancji tej kolekcji nie ma nic wspólnego z tym, jak odnosisz się do kolekcji w swoim kodzie, chyba że piszesz publikacja niestandardowa . Po prostu identyfikuje kolekcję w bazowej bazie danych.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak mogę zaktualizować przyrost dwóch pól w jednym poleceniu w MongoDB?

  2. zaktualizuj głęboko zagnieżdżoną tablicę mongodb

  3. Jak powiedzieć Mongo, aby posortował kolekcję przed ograniczeniem wyników?

  4. Zapytanie Mongo Distinct z sumą nie działa

  5. Jak posortować kolekcję według daty w MongoDB?