From ccc861b6fa51a44b295c348a1318a37c1e3806a7 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Wed, 11 May 2022 15:52:44 +0200 Subject: [PATCH] Improved character subscription performance By limiting fields that can trigger an autorun --- .../server/publications/singleCharacter.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/imports/server/publications/singleCharacter.js b/app/imports/server/publications/singleCharacter.js index 611f1d23..d27be56f 100644 --- a/app/imports/server/publications/singleCharacter.js +++ b/app/imports/server/publications/singleCharacter.js @@ -20,12 +20,18 @@ Meteor.publish('singleCharacter', function(creatureId){ this.error(e); } this.autorun(function (computation){ - let userId = this.userId; - let creatureCursor - creatureCursor = Creatures.find({ + const userId = this.userId; + const creature = Creatures.findOne({ _id: creatureId, + }, { + fields: { + owner: 1, + readers: 1, + writers: 1, + public: 1, + computeVersion: 1, + } }); - let creature = creatureCursor.fetch()[0]; try { assertViewPermission(creature, userId) } catch(e){ return [] } if (creature.computeVersion !== VERSION && computation.firstRun){ @@ -35,7 +41,9 @@ Meteor.publish('singleCharacter', function(creatureId){ catch(e){ console.error(e) } } return [ - creatureCursor, + Creatures.find({ + _id: creatureId, + }), CreatureProperties.find({ 'ancestors.id': creatureId, }),