ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
27 lines (25 loc) • 892 B
text/typescript
import { DataProvider, FetchRelatedRecords } from '../types';
import { getRelatedIds } from './getRelatedIds';
/**
* Helper function for calling the dataProvider.getMany() method,
* and getting a Promise for the records indexed by id in return.
*
* @example
* fetchRelatedRecords(dataProvider)(records, 'post_id', 'posts').then(posts =>
* posts.map(record => ({
* ...record,
* post_title: posts[record.post_id].title,
* }))
* );
*/
export const fetchRelatedRecords =
(dataProvider: DataProvider): FetchRelatedRecords =>
(data, field, resource) =>
dataProvider
.getMany(resource, { ids: getRelatedIds(data, field) })
.then(({ data }) =>
data.reduce((acc, post) => {
acc[post.id] = post;
return acc;
}, {})
);