meteor-apollo-accounts icon indicating copy to clipboard operation
meteor-apollo-accounts copied to clipboard

[createUser Mutation]: Allow custom fields on user document (not .profile)?

Open joncursi opened this issue 7 years ago • 3 comments

Right now the createUser mutation only provides a profile argument where you can supply additional user info such as name, birthday, gender, etc. to store on the profile field in the user document.

However, Meteor doesn't recommend storing ANY of your user data on profile and instead recommends storing it as a first-class field on the user document.

It would be great if createUser were expanded to allow custom fields like this, so we're not forced to stick things under profile, especially when MDG doesn't recommend it.

joncursi avatar May 27 '17 04:05 joncursi

I suppose there is a way around this.

  1. Pass the profile data in through the profile field of the mutation
  2. Create a custom hook on the server to re-arrange the data:
Accounts.onCreateUser((options, user) => {
  return {
    ...user,
    name: options.profile.name, // this pulls the name out of profile and stores it at the top level instead
  };
});

joncursi avatar May 27 '17 05:05 joncursi

@joncursi I've done exactly the same as you

rodcisal avatar May 30 '17 22:05 rodcisal

@joncursi My only concern regarding writing attributes at the top level is that someone might overwrite something very important ie: services The solution they propose is doing it on the server just as you did. https://guide.meteor.com/accounts.html#adding-fields-on-registration

rodcisal avatar May 30 '17 22:05 rodcisal