Skip to content

Cannot subscribe to more than one field #194

Open
@jadamsBG

Description

@jadamsBG

Attempting to subscribe to more than one field will only return the first one in the list. There is some obvious offending code in executor.py:
`def subscribe_fields(exe_context, parent_type, source_value, fields):
exe_context = SubscriberExecutionContext(exe_context)

def on_error(error):
    exe_context.report_error(error)

def map_result(data):
    if exe_context.errors:
        result = ExecutionResult(data=data, errors=exe_context.errors)
    else:
        result = ExecutionResult(data=data)
    exe_context.reset()
    return result

observables = []

# assert len(fields) == 1, "Can only subscribe one element at a time."

for response_name, field_asts in fields.items():
    result = subscribe_field(exe_context, parent_type, source_value, field_asts, [response_name])
    if result is Undefined:
        continue

    def catch_error(error):
        exe_context.errors.append(error)
        return Observable.just(None)

    # Map observable results
    observable = result.catch_exception(catch_error).map(
        lambda data: map_result({response_name: data}))
    return observable
    observables.append(observable)

return Observable.merge(observables)

`

The line return observable causes a bunch of unreachable code and exits the loop early. However, commenting out that line does not appear to fix the problem - if it is removed, only the last item in the subscription list will return.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions