ما أحاول القيام به هو الاستعلام عن معلومات الحساب إلى عملة bcoin عبر واجهة http بقية.
للقيام بذلك ، لا بد لي
accountName
عن طريق الاتصال بـ GET /wallet/:id/account
GET /wallet/:id/account/:accountName
المشكلة هي أن المكالمة الأولى سترجع شيئًا مثل ["default", "mySecondAccountName"]
والتي لا أعرف كيفية تحليلها كاستجابة للرسم البياني ، ولا تمريرها مباشرة إلى الدرجة الثانية 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")
}
ثم تحصل على نتائج ذلك من البيانات وتمريرها إلى استعلام جديد يحصل على تفاصيل الحساب.
شكرا على الاستجابة اللطيفة والسريعة. تضمين التغريدة
ربما لم يكن عليّ أن أذكر bcoin ، مشكلتي أكثر بساطة
في مثال التوجيه @export
في المستند ، يحتوي على مثال لاستدعاء نقطة نهاية REST مرتين .
سؤالي هو ، ماذا علي أن أفعل عندما يقوم الاستعلام الأول في هذا المثال بإرجاع مصفوفة من 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
.
لذلك يجب أن أحدد { theFieldNameIDesire }
بعد السطر account
، المشكلة هي أنه ليس لدي اسم حقل لأحدده :(
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 };
}
}
});
استخدام الاستعلام
شبيبة
يقدم - يجعل() {
إرجاع (
إذا (تحميل) {
إرجاع (
) ؛
}
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
استخدام الاستعلام
{({تحميل ، خطأ ، بيانات}) => {
تحميل...
شبيبة
يقدم - يجعل() {
إرجاع (
إذا (تحميل) {
إرجاع (
) ؛
}
}
"
"