nicolaslopezj / meteor-apollo-accounts

Meteor accounts in GraphQL
MIT License
146 stars 37 forks source link

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

Open joncursi opened 7 years ago

joncursi commented 7 years ago

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 commented 7 years ago

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
  };
});
rodcisal commented 7 years ago

@joncursi I've done exactly the same as you

rodcisal commented 7 years ago

@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