Я использую Relay и django-graphene версии 2. Country.js отображает список стран.
При использовании фрагментов я получаю эту ошибку: Предупреждение: RelayModernSelector: Ожидаемый объект будет содержать данные для фрагмента Country_country
, получил {"node":{"__fragments":{"Country_country":{}},"__id":"Q291bnRyeVR5cGU6MQ=="}}
.Убедитесь, что в родительскую операцию / фрагмент включен фрагмент ...Country_country
без @relay(mask: false)
.
. QueryRenderer возвращает правильный список стран без Country_country, просто введя имя переменной.
<QueryRenderer
environment={environment}
query={graphql`query CartContainerQuery {
viewer {
id
countries(first: 3) {
edges {
node {
...Country_country
}
}
pageInfo {
startCursor
endCursor
}
}
}
}`}
variables={{}}
render={({error, props}) => {
if (error) {
console.log(error)
return <div>Error!</div>;
}
if (!props) {
return <div>Loading...</div>;
}
return (
<div>
{console.log(props)}
<Country country={props.viewer.countries.edges} />
</div>
);
}}
/>
Мой фрагмент на Контрине Контейнера:
export default createFragmentContainer(
Country,
graphql`
fragment Country_country on CountryType @relay(plural: true) {
id
name
}
`
)
Схема графена:
class CountryType(DjangoObjectType, model=Country):
class Meta:
interfaces= (relay.Node,)
filter_fields = ['name', 'id']
class Viewer(graphene.ObjectType):
class Meta:
interfaces = [relay.Node, ]
countries = DjangoFilterConnectionField(CountryType)
country = graphene.List(CountryType)
def resolve_country(self, info, **kwargs):
return Country.objects.all()
def resolve_countries(self, info, **kwargs):
return Country.objects.all()
class Query(graphene.ObjectType):
viewer = graphene.Field(Viewer)
node = relay.Node.Field()
def resolve_viewer(self, info):
return Viewer()
Если я попробую этот запрос в QueryRenderer, он также будет работать нормально:
query={graphql`query CartContainerQuery {
viewer {
id
country {
...Country_country
}
}
}`}
AmЯ использую DjangoFilterConnectionField ложно?