Я звоню ProviderUser.create(action.payload)
в static reducer
точно так же, как в документах, но это не заполнение отношения один к одному.
Создает экземпляр ProviderUser с его атрибутами, правильно заполненными данными из полезной нагрузки. Однако он НЕ устанавливает значение на ProviderUser.provider. ProviderUser.provider имеет значение null после вызова ProviderUser.create(action.payload)
, хотя полезная нагрузка содержит данные для соответствующего поставщика.
class ProviderUser extends Model {
static reducer(action, ProviderUser, session) {
switch (action.type) {
case 'LOAD_AUTHENTICATED_USER_SUCCESS':
let providerUser = ProviderUser.create(action.payload);
break;
}
return undefined;
}
}
ProviderUser.modelName = 'ProviderUser';
ProviderUser.options = { idAttribute: 'pk' };
ProviderUser.fields = {
pk: attr(),
first_name: attr(),
last_name: attr(),
name: attr(),
type: attr(),
provider: oneToOne({
to: 'Provider',
as: 'provider'
}),
};
class Provider extends Model { }
Provider.modelName = 'Provider';
Provider.options = { idAttribute: 'pk' };
Provider.fields = {
pk: attr(),
bio: attr(),
barber_license: attr(),
cosmetology_license: attr(),
};
Вот action.payload (с некоторой удаленной информацией) - вы можете видеть, что полезная нагрузка содержит атрибут провайдера, который, как я ожидаю, использует приставка редукса для создания ProviderUser.provider:
{
type: "provider",
email: "provider@example.com",
first_name: "Braxton",
last_name: "Miller",
name: "Braxton Miller",
pk: "f79d8398-bb10-4f35-b983-391e98c7c1b5",
provider: {
pk: "9961a2da-3aef-4ed7-856f-808b42c8104b",
barber_license: true,
bio: "Bio goes here",
cosmetology_license: false,
}
}
Вот итоговый экземпляр модели ProviderUser после вызова ProviderUser.create(action.payload)
:
email: "provider@example.com"
first_name: "Braxton"
last_name: "Miller"
name: "Braxton Miller"
pk: "f79d8398-bb10-4f35-b983-391e98c7c1b5"
type: "provider"
provider: null // why is this null?
It возможно, стоит отметить, что файл ProviderUser.ref содержит данные для соответствующего поставщика.