私がやろうとしているのは、 httprestインターフェースを介してアカウント情報を
そうするために、私はしなければなりません
accountName
呼び出すことにより、 GET /wallet/:id/account
GET /wallet/:id/account/:accountName
でアカウントの詳細を尋ねる問題は、最初の呼び出しが["default", "mySecondAccountName"]
ようなものを返すことです
これをgraphql応答として解析する方法も、2番目のGET
直接渡す方法もわかりません。
たとえば、次のクエリでクエリを実行しようとしたとき、
query (id: "primary") @rest(type: AccountName, path: "/wallet/:id/account") {
default
Error: Network error: Cannot create property 'default' on string 'default'
を受け取ります
ドキュメントに手がかりが見つかりませんでしたが、これは非常に一般的なケースのようであるため、非常に単純なものが欠落しているに違いありません。 誰かが私が何を探すべきかを私に指摘してくれたら本当に感謝しています
私はbcoinに精通していないので推測しているだけですが、ここに提案があります:
query Account(id: $id){
account(id: $id) @rest(type: "[String]", path: "/wallet/:id/account")
}
次に、データからその結果を取得し、アカウントの詳細を取得する新しいクエリに渡します。
親切で迅速な対応に感謝します。 @fbartho
たぶん私はbcoinに言及するべきではなかったでしょう、私の問題はもっと単純です
ドキュメントの@export
ディレクティブの例では、RESTエンドポイントを2回呼び出す例があります。
私の質問は、この例の最初のクエリがオブジェクトの配列ではなくScalarの配列を返す場合はどうすればよいですか?
キーがないため、エクスポートする引数を指定する方法がないようです。
また、 @export
を使用せずに、前述のようにクエリを実行しようとしましたが、フェッチの結果は{}
次の警告が表示されます
Missing field account in {}
ちなみに、私はあなたの提案で思います
query Account(id: $id)
する必要があります
query Account($id: id)
私があなたが提案したコマンドを実行すると、すなわち
query Account(id: $id){
account(id: $id) @rest(type: "[String]", path: "/wallet/:id/account")
}
実際にはクエリを実行せず、 {}
をdata
として返すだけです。
したがって、 account
の行の後に{ theFieldNameIDesire }
指定する必要があります。問題は、指定するフィールド名がないことです:(
私はあなたが使うべきだと思う@joemphilips typePatcherを
私はそれを使用して、次のような非graphql準拠の応答を処理します
{
"100": {
"id": 100,
"node_id": 105,
"category_id": 8,
"title": "Title 100",
"highlight": true
},
"138": {
"id": 138,
"node_id": 106,
"category_id": 7,
"title": "Title 138",
"highlight": false
},
"140": {
"id": 140,
"node_id": 101,
"category_id": 9,
"title": "Title 140",
"highlight": false
},
"158": {
"id": 158,
"node_id": 146,
"category_id": 4,
"title": "Title 158",
"highlight": false
}
}
クエリ定義
import { gql } from 'apollo-boost';
export const GET_NEWS_QUERY = gql`
query getNews {
News @rest(type: "News", path: "news") {
data
}
}
`;
RestLink構成
const restLink = new RestLink({
uri: API_URL,
typePatcher: {
News: (data, outerType) => {
if (outerType === 'News') {
data = Object.keys(data).map(id => {
const result = data[id];
if (result) {
return {
__typename: 'News',
...result
};
}
});
}
return { data };
}
}
});
クエリの使用法
`` `js
与える() {
戻る (
if(読み込み中){
戻る (
);
}
if (error) {
return (
<View>
<Text>Error :(</Text>
</View>
);
}
const news = data && data.News && data.News.data;
const filteredNews = news && news.filter(Boolean);
return (
<Styles.Container>
<Carousel
data={filteredNews}
handleOnPress={this.navigateToScreen}
/>
</Styles.Container>
);
}}
</Query>
);
}
`
「
返信が遅くなってすみません。 あなたの解決策は配列の文字列/スカラーでは機能しないようです。 しかし、それは修正されているようです。 もう一度やり直します。 そして、私が問題を抱え続けているならば、再開するかもしれません。 ありがとう。
最も参考になるコメント
私はあなたが使うべきだと思う@joemphilips typePatcherを
私はそれを使用して、次のような非graphql準拠の応答を処理します
クエリ定義
RestLink構成
クエリの使用法
{({読み込み、エラー、データ})=> {
読み込んでいます...
`` `js
与える() {
戻る (
if(読み込み中){
戻る (
);
}
}
`
「