Comments (2)
Thanks, store.clear(model, false) completely solved the problem.
I store pointers to related models and in both sides:
- The user has links to comments.
- Comments have links to the user about whom the comment was created.
It is necessary to store pointers to comments with the user (1) in order to have information about user comments before loading the comments themselves. This is especially important when lazy loading comments.
Here we see that the user/company has comments:
In this case, comments will not load until the user opens the corresponding comments section
With this approach, hybrids loads each model separately, but in my case this is even better due to the use of http2 and http caching. In this option, when changing one comment, there is no need to invalidate all user comments, and there is also no need to write complex logic for updating the cache when adding a new comment.
from hybrids.
For the sake of future readers, I assume that you have the following relation:
user -> comment[]
(one to many)
Reverse relation
Regardless of how the relation is stored in the database, it's always the safest to store reverse relation in the model, then you have many to one (from many).
In this case, you would have:
const Comment = {
user: User,
[store.connect]: {
...,
list({ user }) {
// get list of comments for the user
return api.get(`/users/${user}/comments`)...
},
},
};
In the above example, the user model doesn't have to include that relation at all. If you need a list of comments related to the user you call const listForUser = store.get([Comment], { user: "1" })
.
To prevent invalidating all of the lists (for all of the users), when creating a comment, you can clear the list for a specific user by passing the list to the store.clear(listForUser, false)
.
EDIT: This nested model idea was wrong, sorry (I removed it to avoid confusion) ;)
from hybrids.
Related Issues (20)
- The "store(Model, { id: value })" descriptor does not resolve "id" correctly to the model instance. HOT 3
- The "store(Model, { id:value })" descriptor does not work correctly. HOT 2
- Add a helper for assigning component properties HOT 3
- Dynamic columns not showing when render a html table HOT 4
- '"hybrids"' has no exported member named 'property'. Did you mean 'Property'? HOT 8
- Add support for "TypeScript v5" HOT 3
- I can't create an arbitrary number of nested forms: HOT 6
- Small Type Inferencing Issue with Property<E, V> HOT 6
- Cannot pass an object to the API via the "list" method HOT 7
- version 8.2.17 backwards compatibility is broken! HOT 9
- Expand the functionality of drafts
- sync() with nested models is broken HOT 4
- Allow storing an object in a component property HOT 4
- Add partial loading of model data HOT 3
- Why do you remove the lastValue? HOT 2
- The store logs a lot of errors HOT 4
- Convert a Whole Component to Web Component HOT 8
- Scoped CSS HOT 6
- lagging update glitch HOT 2
- Component properties cannot be setted until they are observed HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hybrids.