publicar dados que não estão no banco de dados

Eu queria obter algumas estatísticas sobre meu aplicativo e usei o factspacote (mais informações aqui ) que fornece um modelo para exibir alguns dados de sessão sobre seu aplicativo.

Como eu queria saber como o pacote obtém suas informações, descobri que você pode publicar informações que não estão no banco de dados. Isso pode ser muito útil se você deseja enviar algumas informações para exatamente um cliente.

parece que o thisobjeto no subscriptionhas added, changede removedmétodos que, quando chamados, atualizam a coleção do cliente.

Eu queria experimentar isso criando um aplicativo que envia a hora do servidor para o cliente. As etapas são pequenas o suficiente para listar aqui

mrt create app
mrt
add moment

assim que o aplicativo for criado, atualize o arquivo app.js

if (Meteor.isClient) {

testCollection
= new Meteor.Collection("testCollection");

Template.hello.created = function () {
this._stopHandle = Meteor.subscribe("test");
}

Template.hello.helpers(
{
greeting
: function () {
return "Welcome to app."
},
time
: function(){
return testCollection.findOne();
}
});

Template.hello.events(
{
'click input': function () {
// template data, if any, is available in 'this'
if (typeof console !== 'undefined')
console
.log("You pressed the button");
}
});
}

if (Meteor.isServer) {
var subs = {};

Meteor.startup(function () {

});

Meteor.setInterval(function () {
_
(subs).each(function(sub, userId){
sub.changed("testCollection", "server-time", {serverTime: moment().format("hh:mm:ss"), user: userId});
})
}, 1000);

Meteor.publish("test", function () {
if (this.userId){
subs
[this.userId] = this;
this.added("testCollection", "server-time", {serverTime: moment().format("hh:mm:ss"), user: this.userId});
this.ready();
}
})
}

a fim de exibir os dados na atualização do HTML, app.html

<head>
<title>app</title>
</head>

<body>
{{> hello}}

</body>

<template name="hello">
{{> loginButtons}}


<h1>Hello World!</h1>
{{greeting}} at {{time.serverTime}} for {{time.user}}

<p>
<input type="button" value="Click"/>
</p>
</template>

e então apenas

mrt