mantrajs / meteor-mantra-kickstarter

Kickstart your meteor mantra development
MIT License
184 stars 50 forks source link

logout and tracker errors #13

Open solace opened 8 years ago

solace commented 8 years ago

Hi,

This isn't exactly related to what is currently in the repo, but as authentication and profile/accounts pages are partially implemented and stubbed out, this seems like it'll be relevant later.

I've been building out the profile page, but when a logout is triggered, just before the re-route, it raises Tracker recompute errors when the user data is suddenly missing.

Is there a graceful way of handling this, or is the only way to just null test the user record whereever it is used?

Thanks

makstr commented 8 years ago

Can you please provide some more details, error log?

solace commented 8 years ago

The composers/account/profile.jsx which I'm using to create a form the user can use to update their profile, uses this, which I modified from auth.jsx:

    if (Meteor.subscribe('users.current').ready()) {
        const record = Meteor.users.findOne(Meteor.userId());
        onData(null, {record, error, success});
    }

If for example in the corresponding _form.jsx, you have:

    render() {
        const {record, error, success} = this.props;
        return (
            <div>
                {record.profile.firstName}
            </div>
        );
    }

Navigating to /profile will display the logged in user's first name.

If you click Logout in the menu, in the console you will see:

Exception from Tracker recompute function:
debug.js:41 TypeError: Cannot read property 'profile' of undefined
    at render (_form.jsx:##)

Right before the logout action redirects to the public page.

charlesdeb commented 7 years ago

I constantly run into this error, and as you suggest, usually just null test the meteor.id() before doing something that might result in an error. There must be a better way... @solace, do you remember what you did?