sql >> Databáze >  >> NoSQL >> MongoDB

Šablona MeteorJS nezobrazuje data, nezobrazuje se

V tomto případě jde většinou o nepochopení datového modelu Meteoru.

Ačkoli je možné odesílat data pomocí volání metody, obvykle budete chtít použít publikace a předplatné k odeslání dat klientovi. Ty mají téměř magickou vlastnost, že dotazy jsou živé - to znamená, že veškeré aktualizace dotazu budou automaticky odeslány klientovi. Aktuální kód, který máte, pokud by fungoval správně, neměl by aktuální data. Konkrétním problémem je, že Meteor.call je asynchronní, takže váš pomocník se zprávami nic neuvidí.

Místo toho zde je to, co chcete udělat. Na serveru nastavíte publikaci kolekce zpráv:

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

Všimněte si rozdílů od vašeho kódu:neexistuje žádné fetch() , protože chceme živý kurzor a 20 je pravděpodobně to, co jste zamýšleli jako limitní možnost. Všimněte si, že jsem to také nazval someWeirdName protože to je název publikace , a nikoli kolekce, kterou budete používat k předplacení na klientovi. Pro podrobnější vysvětlení si možná budete chtít přečíst tento příspěvek .

Pak na klientovi potřebujete následující:

Meteor.subscribe("someWeirdName");

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

Všimněte si, že vaše předchozí volání Meteor.subscribe("Messages") nedělal nic, protože neexistovala žádná publikace s názvem Messages . Také použijeme mezipaměť zpráv na straně klienta k vytvoření kurzoru pro zobrazení zpráv.

Veškerý tento kód také vyžaduje, abyste na serveru i na klientovi měli deklarováno následující:

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

Všimněte si také, že argument použitý k vytvoření instance této kolekce nemá nic společného s tím, jak na kolekci odkazujete ve svém kódu, pokud nepíšete vlastní publikace . Jednoduše identifikuje kolekci v podkladové databázi.



  1. Komprese v node.js

  2. Jak získat informace o uživateli z mongodb v node.js

  3. Hromadná aktualizace dokumentů v MongoDB

  4. MongoDB:agregační rámec:$match mezi poli