Сохраняйте данные на двух разных ресурсах - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь сохранить полную запись пользователя, но я использую две отдельные таблицы. Данные профиля сохраняются на одном ресурсе, а адрес - на другом. Как я могу написать код, чтобы он сначала сохранил профиль, а из сгенерированного идентификатора сохранил адрес? Это возможно?

Форма профиля

Адресная форма

Вот мой код создания пользователя:

export const BarberCreate = (props) => {
  return (
    <Create {...props}>
      <TabbedForm toolbar={<BarberCreateToolbar />}>
        <FormTab label="Perfil">
          <TextInput source="name" />
          <TextInput source="email" />
          <DateInput source="birthday" />
          <TextInput source="phone" placeholder="(99) 99999-9999" />
          <TextInput source="transport" />
        </FormTab>

        <FormTab label="Endereço">
          <TextInput source="street" label="Rua" />
          <TextInput source="city" label="Cidade" />
          <TextInput source="district" label="Bairro" />
        </FormTab>
      </TabbedForm>
    </Create>
  );
};```

1 Ответ

0 голосов
/ 09 мая 2020

Лучше всего сделать это на бэкэнде, возможно, с поддержкой транзакций, но если вы не можете, один из способов go на стороне реагирования-администратора - это украсить dataProvider. *

const userSaverDataProvider = dataProvider => ({
    ...dataProvider,
    create: async (resource, params) => {

        if (resource === 'users') {

            const profile = await dataProvider.create('profile', {data: {
                name: params.data.name,
                ....
            }})

            await dataProvider.create('address', {data: {
                profileID: profile.data.id,
                street: params.data.street,
                ...
            }})

            return profile        

        }        

        return dataProvider.create(resource, params)
    }
})

Возможно, необходимо также украсить createMany, если вы делаете массовое создание пользователей в react-admin. Кроме того, оформление заказа https://github.com/FusionWorks/react-admin-google-maps, может быть полезно

...