While looking at a code snippet, I found that we didn't come back to providing parent[info.fieldName] for scalar resolvers. This is an easy way of making this work. It does add a bit of overhead, but I think it's the only way to add this without a breaking change (and without doing a weird set/delete dance, which is likely to be slower)
The other issue is that info.parentFieldKey isn't consistently populated with the fieldKey (as is implied and documented) but with info.parentKey joined with the fieldKey, i.e. a full key.
This means that cache.resolve(parent, info.parentFieldKey) wouldn't work in resolvers, but would work in updaters.
Set of changes
Replace incorrect updateContext calls to fix info.parentFieldKey in resolvers
Update parent input for scalar fields to have both parent[fieldAlias] and parent[fieldName] set to the record value
Summary
While looking at a code snippet, I found that we didn't come back to providing
parent[info.fieldName]
for scalar resolvers. This is an easy way of making this work. It does add a bit of overhead, but I think it's the only way to add this without a breaking change (and without doing a weird set/delete dance, which is likely to be slower)The other issue is that
info.parentFieldKey
isn't consistently populated with thefieldKey
(as is implied and documented) but withinfo.parentKey
joined with thefieldKey
, i.e. a full key.This means that
cache.resolve(parent, info.parentFieldKey)
wouldn't work in resolvers, but would work in updaters.Set of changes
updateContext
calls to fixinfo.parentFieldKey
in resolversparent[fieldAlias]
andparent[fieldName]
set to the record value