userCache icon indicating copy to clipboard operation
userCache copied to clipboard

returned user doc doesn't always include _id field when from cache

Open wildhart opened this issue 5 years ago • 0 comments

I've had instances where the returned user doc doesn't include the _id field.

This can cause a bug in code like this:

// toggle the 'flag' of user given by 'username', or the logged in user
const user = username
   ? Meteor.users.findOne({username}, {fields: {[flag]: 1}})
   : Meteor.user(flag);
Meteor.users.update({id: user._id}, {$set: {[flag]: !user[flag]}});

Which fails if username is falsey and the cached Meteor.user() doesn't contain the _id field.

Obviously this is a contrived example which could easily be rewritten, but I did hit this bug and so userCache should be fixed to return the expected result consistent with the default Meteor.user().

I have a PR to fix this nearly ready...

wildhart avatar Jun 06 '19 02:06 wildhart