import Creatures from "/imports/api/creature/Creatures.js"; import creatureCollections from '/imports/api/creature/creatureCollections.js'; Meteor.publish("singleCharacter", function(charId){ userId = this.userId; var char = Creatures.findOne({ _id: charId, $or: [ {readers: userId}, {writers: userId}, {owner: userId}, {"settings.viewPermission": "public"}, ], }); if (char){ return [ Creatures.find({_id: charId}), ...creatureCollections.map( collection => collection.find({charId}) ) ]; } else { return []; } }); DDPRateLimiter.addRule({ name: "singleCharacter", type: "subscription", userId: null, connectionId(){ return true; }, }, 8, 10000, function(reply, ruleInput){ if(!reply.allowed){ logRateError(reply, ruleInput); } }); Meteor.publish("singleCharacterName", function(charId){ userId = this.userId; return Creatures.find({ _id: charId, $or: [ {readers: userId}, {writers: userId}, {owner: userId}, {"settings.viewPermission": "public"}, ], }, { fields:{"name": 1} }); });