mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-05-22 13:48:46 +00:00
Spells Performances (#11104)
* spells: only select needed fields * fix tests * add comment
This commit is contained in:
parent
9f09a0396b
commit
bd3de3c48c
1 changed files with 7 additions and 7 deletions
|
|
@ -11,7 +11,9 @@ import {
|
|||
} from '../models/group';
|
||||
import apiError from '../libs/apiError';
|
||||
|
||||
const partyMembersFields = 'profile.name stats achievements items.special';
|
||||
const partyMembersFields = 'profile.name stats achievements items.special notifications flags';
|
||||
// Excluding notifications and flags from the list of public fields to return.
|
||||
const partyMembersPublicFields = 'profile.name stats achievements items.special';
|
||||
|
||||
// @TODO: After refactoring individual spells, move quantity to the calculations
|
||||
|
||||
|
|
@ -78,8 +80,7 @@ async function castPartySpell (req, party, partyMembers, user, spell, quantity =
|
|||
'party._id': party._id,
|
||||
_id: { $ne: user._id }, // add separately
|
||||
})
|
||||
// .select(partyMembersFields) Selecting the entire user because otherwise when saving it'll save
|
||||
// default values for non-selected fields and pre('save') will mess up thinking some values are missing
|
||||
.select(partyMembersFields)
|
||||
.exec();
|
||||
|
||||
partyMembers.unshift(user);
|
||||
|
|
@ -101,8 +102,7 @@ async function castUserSpell (res, req, party, partyMembers, targetId, user, spe
|
|||
if (!party) throw new NotFound(res.t('partyNotFound'));
|
||||
partyMembers = await User
|
||||
.findOne({_id: targetId, 'party._id': party._id})
|
||||
// .select(partyMembersFields) Selecting the entire user because otherwise when saving it'll save
|
||||
// default values for non-selected fields and pre('save') will mess up thinking some values are missing
|
||||
.select(partyMembersFields)
|
||||
.exec();
|
||||
}
|
||||
|
||||
|
|
@ -183,9 +183,9 @@ async function castSpell (req, res, {isV3 = false}) {
|
|||
let partyMembersRes = Array.isArray(partyMembers) ? partyMembers : [partyMembers];
|
||||
|
||||
// Only return some fields.
|
||||
// See comment above on why we can't just select the necessary fields when querying
|
||||
// We can't just return the selected fields because they're private
|
||||
partyMembersRes = partyMembersRes.map(partyMember => {
|
||||
return common.pickDeep(partyMember.toJSON(), common.$w(partyMembersFields));
|
||||
return common.pickDeep(partyMember.toJSON(), common.$w(partyMembersPublicFields));
|
||||
});
|
||||
|
||||
let userToJson = user;
|
||||
|
|
|
|||
Loading…
Reference in a new issue