2015-09-10 14 views
7

olduğunu anlamak için Tek bir kartta, ancak aynı zamanda birden fazla kartta sorgulama. GraphIQl UI kullandığımda ve bu "sorgu {cards {name}}" gibi bir sorgulama yaptığımda, beklendiği gibi bir dizi kart alırım. Ancak, aynı sorguyu yapan bir RelayContainer'ım var, ancak geri gelen sahne sonuçları bir dizi sonuçtan ziyade sadece ilk sonuçtur. Üste | Geri Bildirim Ver Daha fazla bilgi Daha fazla bilgi edinin: http://support.microsoft.com/contactus/index.aspx.nasıl alınır RelayJS GraphQL bir yanıt Bir GraphQL sunucu kabaca böyle bir şema ile çalışan öğelerin bir dizi değil, sadece tek bir öğe

class CardList extends React.Component { 
    render() { 
    return <div>{this.props.cards}</div> // UNEXPECTED - this.props.cards is the first card, not an array for me to .map over 
    } 
} 

export default Relay.createContainer(CardList, { 
    fragments: { 
    cards:() => Relay.QL` 
     fragment on Card { 
     name 
     } 
    `, 
    }, 
}); 

Herkes herhangi bir öneriniz var:

class MyApp extends React.Component { 
    render() { 
    return (
     <div> 
     <h1> Hello world!</h1> 
     <CardList cards={this.props.cards} /> 
     </div> 
    ); 
    } 
} 

export default Relay.createContainer(MyApp, { 
    fragments: { 
    card:() => Relay.QL` 
     fragment on Card { 
     name 
     } 
    `, 
    cards:() => Relay.QL` 
     fragment on Card { 
     ${CardList.getFragment('cards')} 
     } 
    ` 
    }, 
}); 

ve CardList bileşeni

böyle Kabı ile kurulur? Bu, GraphQL ve Relay'a dalış yaptığım 2. gündür, bu yüzden bildiğim her şey için çok basit bir hata yapıyor olabilirim.

+0

TODO Röle örneğinin nasıl çalıştığına bakın. Https://github.com/graphql/graphql-relay-js https://github.com/facebook/relay/blob/a04a51486c2576c4a0dcdb091023e1bda0d0a5fe/examples adresinden 'connectionsDefinition 'kullanmanız gerektiğinden, GraphQL şemanız Relay için doğru değil. /todo/data/schema.js#L93-L100 –

cevap

10

Muhtemelen,sorgu bölümünüzde bir @relay(plural: true) yönergesini isteyebilirsiniz. Röle repo'unda in the Star Wars example eyleminde çoğul bir alan örneği vardır.

Ancak, sayfa numaralandırmayı önemsiyorsanız, çoğul bir alan yerine bir bağlantı isteyebilirsiniz. Bağlantılar in the Relay docs olarak tarif edilmiş ve graphql-relay-js'da uygulanmıştır.

+0

Teşekkürler, keşfetmek için bu yoldan başlıyorum. Yine de tamamen güçsüz kaldığım bir şey, örneklerin hepsinin üste tekil bir nesneyle başlayan bir bağlantı göstermesidir. Örneğin. Faction birçok Gemiye sahiptir, Todo'nun birçok Todo öğesi vardır, vs. Bununla birlikte, kökte çoğul bir şey istiyorsanız ne olur? (örn. AllShips) –

+3

Şu anda kökte bir bağlantınız olamaz. Bu bilinen bir sınırlamadır, ancak bunu çözmeyi planlıyoruz ve ilerleme [burada izleniyor] (https://github.com/facebook/relay/issues/112). Şimdilik geçici çözüm, bu tür şeyleri başka bir kök alanında (örneğin, "görüntüleyici" gibi) sarmaktır. – wincent

+0

Bu nedenle, bağlantı, belirli bir Röleye özel sayfalandırma etkinleştirme yöntemidir? Varlık ilişkileri ile ilgili olmasa da, bunun yerine milyonlarca hesabın olabileceği hesaplar üzerinde bir sorguyla mı ilgilidir? – Ryan