Recommended way to store user data

Meteor Guide is quite clear on user.profile:

Rather than dealing with the specifics of this field, it can be helpful to just ignore its existence entirely.

Also:

As discussed in the Collections article, Meteor’s data transfer protocol doesn’t do deeply nested diffing of fields, so it’s a good idea to flatten out your objects into many top-level fields on the document.

So what is the recommended way to store user related data?

  1. Store them in not-too-deep user fields (custom, other than profile)? How deep can they be? Is user.workDays.monday.starts ok or too deep?
  2. Create related Collections?
  3. … something other?

I’m looking forward to read your suggestions :slight_smile:

At the moment I just store all non-sensitive data on “profile”. Though I suppose from a performance standpoint it’d be better to flatten it out. It doesn’t really matter that much though if your users are not constantly getting modified. If you use nested fields, it doesn’t matter if they’re 1 level or 5 levels deep, so do whatever suits you best. It’s just that whenever something changes on the field, the whole field will be resent.

1 Like