export function getCategories (apolloClient) { // get the current data of the store const apolloData = apolloClient.store.getState().apollo.data; // filter these data based on their typename: we are interested in the categories data const categories = _.filter(apolloData, (object, key) => { return object.__typename === 'Category' }); // give the form component (here: checkboxgroup) exploitable data const categoriesOptions = categories.map(function (category) { return { value: category._id, label: category.name, // slug: category.slug, // note: it may be used to look up from prefilled props }; }); return categoriesOptions; } // category schema const schema = { _id: { type: String, viewableBy: ['guests'], optional: true, publish: true }, name: { type: String, viewableBy: ['guests'], insertableBy: ['members'], editableBy: ['members'], publish: true }, description: { type: String, optional: true, viewableBy: ['guests'], insertableBy: ['members'], editableBy: ['members'], publish: true, form: { rows: 3 } }, order: { type: Number, optional: true, viewableBy: ['guests'], insertableBy: ['members'], editableBy: ['members'], publish: true }, slug: { type: String, optional: true, viewableBy: ['guests'], insertableBy: ['members'], editableBy: ['members'], publish: true, }, image: { type: String, optional: true, viewableBy: ['guests'], insertableBy: ['members'], editableBy: ['members'], publish: true }, parentId: { type: String, optional: true, control: "select", viewableBy: ['guests'], insertableBy: ['members'], editableBy: ['members'], publish: true, resolveAs: 'parent: Category', form: { options: formProps => getCategories(formProps.client) } } }; export default schema;