Справочное поле Admin-on-Rest не отображается должным образом

Я не могу заставить ReferenceField работать должным образом, так как он показывает только "индикатор вращения" для поля firstName.

Я могу успешно использовать примеры с данными из https://jsonplaceholder.typicode.com/ для работы с клиентом simpleRest, но не с моими конечными точками API. Я вижу запрос GET_LIST - ответ, а затем связанный ответ GET_MANY с данными владельца, но поле ссылки, помеченное как "Пользователь", не отображается.

Одно из отличий в структуре конечных точек API заключается в том, что ссылка, возвращенная в моем API, полностью определена в соответствии с этой структурой "resource:io.mydomain.#"

Но поскольку второй вызов API сработал и данные были возвращены, похоже, это не имеет значения. На данный момент мне нужно несколько указателей, куда идти дальше...

//App.js
const App = () => (
  <Admin dashboard={Dashboard} theme={getMuiTheme(darkBaseTheme)} title="Admin" authClient={authClient} restClient={restClient}>
      <Resource name="Asset" list={AssetList} label="Assets" />
      <Resource name="Owner" list={UserList}  label="Users"  />
      <Resource name="AssetTitle" list={AssetTitleList}  label="Ownership" />
 </Admin>

//users.js
 export const UserList = (props) => (
     <List title="All Users" {...props}>
         <Datagrid>
             <TextField source="id" />
             <TextField source="firstName" />
             <TextField source="lastName" />
             <TextField source="mobile" />
             <EmailField source="email" />
               <EditButton />
         </Datagrid>
     </List>
 );

 //titles.js
 export const AssetTitleList = (props) => (
     <List title="All Titles..." {...props}>
         <Datagrid>
           <TextField source="id" />
           <ReferenceField label="User" source="owner" reference="Owner" >
                          <TextField source="firstName" />
           </ReferenceField>
           <TextField source="information" />
         </Datagrid>
     </List>
 );

//AssetTitle API returns
[{"$class":"io.mydomain.AssetTitle",
"id":"12345",
"owner":"resource:io.mydomain.Owner#11111",
"asset":"resource:io.mydomain.Asset#991",
"information":""}]

//Owner API returns
[{"$class":"io.mydomain.Owner",
"firstName":"Joe",
"lastName":"Doe",
"email":"joe@doe.com",
"mobile":"",
"id":"11111"}]

Снимок экрана рендеринга Referencefield

1 ответ

Решение

Возможно, вам придется очистить данные, возвращенные из вашего API в вашем restClient,

Я вижу, что owner поле для title ресурс resource:io.mydomain.Owner#11111, Тем не менее id поле owner ресурс 11111,

Вы должны будете реализовать свой собственный restClient и "очистить" все известные идентификаторы, такие как owner поле, так что они содержат только идентификатор. Смотрите документацию по реализации собственного отдыха клиента.

Другие вопросы по тегам