Model.create обрабатывает создание связанных моделей? - PullRequest
0 голосов
/ 30 апреля 2020

Я звоню 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 содержит данные для соответствующего поставщика.

...