Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cache mechanism causes some trouble #694

Closed
xidui opened this issue Jan 11, 2016 · 2 comments
Closed

Cache mechanism causes some trouble #694

xidui opened this issue Jan 11, 2016 · 2 comments

Comments

@xidui
Copy link

xidui commented Jan 11, 2016

I defined a mysql model

{
    id: {type: 'number'}
    some_object: {type:'text'}
}, {
    hooks: {
        beforeSave: function (next){
            this.some_object = JSON.stringify(this.some_object);
            return next();
        },
        afterLoad: function (next){
            this.some_object = JSON.parse(this.some_object);
            return next();
        }
    }
}

Every time I use it, it want the field is already a JSON obj and text in db

Seems that there is a caching mechanism:

  1. I get it by id immediately after I create one.
    I found that the afterLoad will not be called when I do some search thing
  2. which causes the problem:
    the beforeSave hook is called at last, so the some_object in memory is text not obj

how about calling the afterLoad hook no matter it is in cache or not?

@dxg
Copy link
Collaborator

dxg commented Jan 12, 2016

The cache is not a cache but an implementation of the identity pattern.
It will not improve performance, so you might as well not use it.

@xidui
Copy link
Author

xidui commented Jan 13, 2016

@dxg
How can I call afterLoad every time I use the model.get

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants