Skip to content

Prefetching does not work as expected #191

Description

@rainer-friederich

With the release 2.5 and the merge of #181 prefetch and embed should work.

Embedding does work 100% how react-admin expects it but prefetching not as far as I can see.

Without embedding and prefetching

<List ...>
  ...
  <ReferenceField source="defectCategoryId" reference="defect-category" />
  ...
</List>

Leads to this API response:

[
  {
    id: 1,
    defectCategoryId: 2,
    ... 
  },
  ...
]

With embedding

<List ... queryOptions={{meta: {embed: [defectCategoryId]}}}>
  ...
  <TextField source="defect-category.title" />
  ...
</List>

And resolves to an api response like the following:

[
  {
    id: 1,
    defectCategoryId: 2,
    "defect-category": {
      id: 2,
      title: "test",
      ...
    },
    ... 
  },
  ...
]

With prefetching

<List ... queryOptions={{meta: {prefetch: [defectCategoryId]}}}>
  ...
  <ReferenceField source="defectCategoryId" reference="defect-category" />
  ...
</List>

And resolves to an api response like the following:

[
  {
    id: 1,
    defectCategoryId: 2,
    "defect-category": {
      id: 2,
      title: "test",
      ...
    },
    ... 
  },
  ...
]

Which then leads to an error message logged (Sorry for the cryptic Next.js error but it is inside getPrefetchedData):

TypeError: Cannot read properties of null (reading 'id')
    at http://localhost:3001/_next/static/chunks/node_modules_4c61ac1e._.js:13805:54
    at Array.some (<anonymous>)
    at http://localhost:3001/_next/static/chunks/node_modules_4c61ac1e._.js:13804:42
    at Array.forEach (<anonymous>)
    at http://localhost:3001/_next/static/chunks/node_modules_4c61ac1e._.js:13803:28
    at Array.forEach (<anonymous>)
    at http://localhost:3001/_next/static/chunks/node_modules_4c61ac1e._.js:13796:19
    at Array.forEach (<anonymous>)
    at getPrefetchedData (http://localhost:3001/_next/static/chunks/node_modules_4c61ac1e._.js:13795:19)
    at http://localhost:3001/_next/static/chunks/node_modules_4c61ac1e._.js:13493:34

Perhaps this is due to the different format react-admin expects the data like listed in the "meta.prefetched" response in the docs?

If I understand this correctly the embed works like it should.
The prefetch differs in the returned format.
I guess this is due to a limitation of PostgREST but I'm unsure here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions