top | item 10352471

(no title)

xtrumanx | 10 years ago

If you have two fields in a query, does that mean two resolve functions? If I using a SQL database and the two fields were stored on two columns on the same table, wouldn't that cause 2 SQL queries to be run?

discuss

order

leebyron|10 years ago

Only if each field required loading a new row, and even then batching can be used to turn this back into one query.

eg: { firstName, lastName } doesn't need to load new rows but { mother { name }, father { name } } does need to load new rows.

DataLoader (https://github.com/facebook/dataloader) is a small utility which makes batching and caching database requests straight forward.

verbin217|10 years ago

Yes. But only one http request. If they're both the same query but access a different field you might be able to cache it.

devit|10 years ago

Sangria in Scala has a mechanism called "Deferred" that lets you specify that it should ask you to resolve objects of a certain type all at once at the end, and you would do a single SQL query per object type there.

If the JavaScript implementation doesn't have something like this, perhaps it can be hacked on top.