将数据保存到两个不同的资源
Save data to two different resources
我正在尝试保存用户的完整记录,但我依赖于两个单独的表。配置文件数据保存在一个资源中,地址保存在另一个资源中。我如何编写代码以便它首先保存配置文件,然后从生成的 ID 中保存地址?可能吗?
Profile form
Address form
这是我的创建用户代码:
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>
);
};```
最好是在后端执行此操作,可能需要事务支持,但如果不能,则在反应管理方面进行的一种方法是装饰数据提供者。
v3
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)
}
})
如果您在 react-admin 上批量创建用户,也许还需要装饰 createMany。另外,结帐https://github.com/FusionWorks/react-admin-google-maps,它可能会有用
我正在尝试保存用户的完整记录,但我依赖于两个单独的表。配置文件数据保存在一个资源中,地址保存在另一个资源中。我如何编写代码以便它首先保存配置文件,然后从生成的 ID 中保存地址?可能吗?
Profile form
Address form
这是我的创建用户代码:
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>
);
};```
最好是在后端执行此操作,可能需要事务支持,但如果不能,则在反应管理方面进行的一种方法是装饰数据提供者。
v3
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)
}
})
如果您在 react-admin 上批量创建用户,也许还需要装饰 createMany。另外,结帐https://github.com/FusionWorks/react-admin-google-maps,它可能会有用