2016-03-25 17 views
3

'da aynıdır Relay'da yeniyim ve bir parçanın iç içe geçmiş verileriyle ilgili bir sorun yaşıyorum.İç içe geçmiş parça verileri her zaman Relay

Aşağıdaki sorgu, grafik içinde test ettiğimde doğru verileri döndürür, böylece şemamın doğru olduğundan eminim. Ben Röleli yukarıdaki sorgu kullandığınızda

{ 
    viewer { 
    customers { 
     name 
     billing_address { 
     city 
     } 
    } 
    } 
} 

Ancak customer.name doğru olacaktır ama customer.billing_address.city her müşteri için aynıdır. İç içe geçmiş veriler kopyalanmaya çalışılırken bazı verilerin neden doğru olacağı bana kafa karıştırıcı.

Bu konuyla ilgili herhangi bir yardım için minnettarım ve daha fazla bilgi gerekiyorsa bunu eklemekten memnuniyet duyarım. Aşağıda benim projemde bulunan ve konunun olabileceğine inandığım tek Röle kodu var.

class App extends Component { 
    render() { 
    console.log(this.props.viewer.customers); 
    return (
     <div> 
     {this.props.viewer.customers.map((customer) => (
     <div> 
      <div>{customer.name}</div> 
      <div>{customer.billing_address.city}</div> 
     </div> 
    ))} 
     </div> 
    ); 
    } 
} 

class AppHomeRoute extends Relay.Route { 
    static queries = { 
    viewer:() => Relay.QL` 
     query { 
     viewer 
     } 
    `, 
    }; 
    static routeName = 'AppHomeRoute'; 
} 

const AppContainer = Relay.createContainer(App, { 
    fragments: { 
    viewer:() => Relay.QL` 
     fragment on Viewer { 
     customers{ 
      name 
      billing_address{ 
      city 
      } 
     } 
     }` 
    }, 
}); 

ReactDOM.render(
    <Relay.RootContainer 
    Component={AppContainer} 
    route={new AppHomeRoute()} 
    />, 
    document.getElementById('root') 
); 
+1

Bir olası sorun, GraphQL şemasındaki billing_address çözümünü nasıl çözdüğünüz olabilir. Billing_address GraphQL türünüze bir 'field: id,! Types.ID' veya' globalIdField' eklediniz mi? GraphQL şemanızı göndermek de yardımcı olabilir. – nethsix

+0

@nethsix Yardımlarınız için çok teşekkür ederim. Esasen sorun buydu. Mongo'yu arka uçlarım için kullanıyorum ve mongo'nun şemada erişmeye çalıştığım halde bile bir ObjectID sağlamadığı yerleşik bir belge kullanıyordum. Ben sadece gömülü mongo bir ref için geçiş yaptım ve mükemmel çalıştı. Tekrar teşekkürler. –

+0

Tavsiyenin yardımcı olmasına sevindim. Yorumları soruya cevap olarak mı taşırsam sorun olur mu? – nethsix

cevap

1

Muhtemel bir sorun, GraphQL şemanızda billing_address çözümünü nasıl çözebileceğinize bağlı olabilir. Billing_address GraphQL tipinize field :id, !types.ID veya globalIdField eklediniz mi? GraphQL şemanızı göndermek de yardımcı olabilir.

İlgili konular