按日期过滤 react-admin 查询

Filter react-admin query by dates

我正在使用 react-adminuseGet... 查询从我的 rails 后端收集数据。这里的主要问题是过滤器 属性(useGetList 操作中的最后一对花括号)。我如何按日期过滤数据(比如只获取上个月的交易等)

这是当前(有效)方法:

const { data, loading, error } = useGetList(
    'transactions', 
    { page: 1, perPage: 10000 }, 
    { field: 'id', order: 'ASC' }, 
    {},
)
if (loading) return <p>Loading</p>
if (error) return <p>Error</p>
if (!data) return null

数据库中的条目都有 createdAtupdatedAt 属性。

我的方法是创建一个这样的过滤器:

// constraints could be dates that I can easily set beforehand
{ 
    {'createdAt', desiredLowerTimeConstraint, operation: '<='}, 
    {'createdAt', desiredUpperTimeConstraint, operation: '<='} 
}

react-admin documentation 与过滤器 属性 相当稀疏,我找不到很好的例子来说明这些对象应该是什么样子。

这完全取决于您的 API 期望过滤器的外观。

例如,在 JSONServer 提供的 REST API 中,查询字符串参数名称上的 _lte 后缀表示您想要结果 "Less Than or Equal to" 的值:

GET /transactions?createdAt_lte=2019-12-05

如果您使用 ra-data-simple-rest,您可以通过在 filter 中传递参数来制作此请求:

const { data, loading, error } = useGetList(
    'transactions', 
    { page: 1, perPage: 10000 }, 
    { field: 'id', order: 'ASC' }, 
    { createdAt_lte: '2019-12-05' },
)

如果您的 API 表现不同,那么您可以对 useGetList 使用相同的语法,并在将参数发送到 API 之前转换 dataProvider 中的参数.