Open tvogels opened 9 years ago
It turns out it helps to write
return liveDb.select(
'SELECT * FROM event WHERE 1=2',
[ { table: '---' } ]
);
instead of
this.stop();
return;
Is there a more elegant solution for returning an 'empty collection'?
Hmm this is an interesting case. There is no built-in way to deal with this but your suggestion of returning an empty collection points me to this solution:
Meteor.publish('pubname', function(param) {
if (!this.userId) {
this._session.send({
msg: 'added',
collection: this._name,
id: this._subscriptionId,
fields: { diff: { removed: null, moved: null, copied: null, added: null } }
});
return;
}
check(param,Number);
return liveDb.select(
'SELECT * FROM table WHERE param = '+liveDb.db.escape(param),
[ { table: 'table' } ]
);
});
Send the DDP message to the client directly without instantiating another LiveMysqlSelect
instance. The change()
method will automatically clear the results before processing the next diff
so in this case, just send a null
diff DDP message and the result will be an empty collection.
Hopefully that helps :smile_cat:
When a publication requires a user to be logged in, like this:
and there is a subscription like this:
(I change the parameter with
mysubscription.change()
now and then),then there is a problem with logging out. The desired behaviour is that all current subscriptions automatically clear after calling
Meteor.logout()
, but this does not happen. Something does change however. Before logging out,mysubscription.ready()
returnstrue
, but after it returnsfalse
.Edit: The same behaviour occurs when logging in, actually.