获取 ReferenceManyField 计数?

Get ReferenceManyField Count?

如何显示 "ReferenceManyField" 组件的计数?

事情是这样的,我正在列出组织,我想获得每个组织的用户数。

获取组织:

GET /organizations?filter={}&range=[0,24]&sort=["name","ASC"]

获取每个组织的用户:

...
GET /users?filter={"uuid_organization":"1117b0a0-6ec7-40e3-9ee6-49d121c27111"}&range=[0,99]&sort=["email","ASC"]
...
    <List
        {...props}
        filters={<OrganizationFilter />}
        sort={{ field: 'name', order: 'ASC' }}
        perPage={25}
    >
        <Responsive
            xsmall={<MobileGrid />}
            medium={
                <Datagrid expand={<OrganizationShow />}>
                    <OrganizationLinkField />
                    <ReferenceManyField label="Users" reference="users" target="uuid_organization" sort={{ field: 'email', order: 'ASC' }}>
                        // PRINT: 102 users
                    </ReferenceManyField>
                    <EditButton />
                </Datagrid>
            }
        />
    </List>

我不确定我是否应该这样做,这似乎效率低下且矫枉过正。你怎么看?

提前致谢。

您选择的方法是 react-admin 实现它以通过外键获取连接数据的方式,恕我直言,这并不过分,因为在数据库级别您仍然需要查询另一个 table.

根据documentation, 响应格式 GET_MANY_REFERENCE 有一个额外的响应 属性 称为 totalGET_MANY_REFERENCE { data: {Record[]}, total: {int} }

ReferenceManyField 字段组件使用此响应格式检索数据,使用当前记录 ID 作为引用资源的外键 (parent id)。

深​​入研究 react-admin code latest version 2.9.0 我看到 ReferenceManyField 将道具传递给它 children 并且如何处理数据取决于您(例如 List, DataGrid) 并且道具之一是 total (记录数),默认情况下传递给 Pagination 组件。

如果您不想使用其他任何东西,您可以创建自己的简单功能组件来处理这些道具:

import React from 'react';

const UserTotal = props => <div>User count: {props.total}</div>;

export default UserTotal;

以及您参考字段的用法:

<ReferenceManyField 
  label="Users" 
  reference="users" 
  target="uuid_organization" 
  sort={{ field: 'email', order: 'ASC' }}
>
  <UserTotal />
</ReferenceManyField>