A resolver is the function on the server that receives a GraphQL query, decides what to do with it (how to resolve it), and then returns some data.
Each level of a GraphQL query (in other words, each field) can have its own custom resolver; or if no resolver exists the field will default to look for a value on its parent object.
Technically speaking, every single field in the fragment has to resolve to something. But if for example you’ve specified a
Post resolver and you’re asking for a post’s
createdAt properties, GraphQL will be smart enough to look for
post.createdAt without you needing to define additional resolvers for these two fields.
That being said if you wanted
createdAt to resolve to, say,
formatDate(post.createdAt) instead of just
post.createdAt, then you could write a custom resolver just for that specific field.
As long as you use
withMulti in conjunction with
withDelete, your lists will automatically be updated after any mutation. This includes:
- Inserting new items in lists after they’re inserted.
- Removing items when they’re removed.
- Reordering lists when an item is edited in a way that changes a sort.
- Removing an item after it’s been edited when it doesn’t match a list’s filters anymore.
At this time, it’s only possible to benefit from this auto-updating behavior if you’re using the three built-in mutation HoCs, although making
withMulti more flexible towards custom mutations is on the roadmap (PRs welcome!).
You can replace any of Vulcan’s generic HoCs with your own tailor-made HoCs (whether it is for queries or mutations) using the
graphql utility. Note that if you do so, you will need to manually update your queries after each mutation.