Skip to content

Key option is not correctly forwarded in builder.getAll #2973

@IqualityHerre

Description

@IqualityHerre

Describe the bug
Here: https://github.com/BuilderIO/builder/blob/main/packages/core/src/builder.class.ts#L2736

The or operator || binds stronger than the tertiary operator ?.

The code seems to intended as:

options.key || (Builder.isBrowser ? `${modelName}:${hash(omit(options, 'initialContent', 'req', 'res'))}` : undefined),

However as || binds stronger it's actually

(options.key || Builder.isBrowser) ? `${modelName}:${hash(omit(options, 'initialContent', 'req', 'res'))}`  : undefined

Meaning that the options.key value is always ignored. Inside the browser the modelName followed by a hash is passed and outside the browser undefined is always passed (unless a key option is provided in which case it's still ignored but the modelName followed by a hash is used).

To Reproduce
Steps to reproduce the behavior:

  1. Call builder.getAll and provide a key option.
  2. Either via breakpoints, network inspection or any other method observe that the provided key value is not used and the modelname followed by a hash is used instead.

Expected behavior
If options.key is provided then it's used.

This explicitly causes issues when doing multiple requests on the same modelName where requests after the first return promises that never fulfill.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions