【问题标题】:Get ReferenceManyField Count?获取 ReferenceManyField 计数?
【发布时间】:2019-09-14 03:42:12
【问题描述】:

如何显示“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


    【解决方案1】:

    您选择的方法是 react-admin 实现它以通过外键获取连接数据的方式,恕我直言,这并没有太大的杀伤力,因为在数据库级别您仍然需要查询另一个表。

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

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

    深入研究react-admin code latest version 2.9.0 我看到ReferenceManyField 将道具传递给它的孩子,这取决于你如何处理数据(例如ListDataGrid),其中一个道具是@ 987654332@(记录数)默认传递给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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2018-06-04
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多