Gatsby: السماح بالحقول غير الموجودة في استعلامات GraphQL

تم إنشاؤها على ٨ أكتوبر ٢٠١٧  ·  42تعليقات  ·  مصدر: gatsbyjs/gatsby

مرحبا،
أنا أستخدم Gatsby مع البرنامج المساعد لمصدر Wordpress. حتى الان جيدة جدا. لكن الشيء هو أنني أستعلم عن الحقول التي قد تكون أو لا تكون موجودة ، في هذه الحالة ، الصورة المميزة للمنشور.
هنا هو استفساري:

{
allWordpressPost(sort: { fields: [date] }) {
      edges {
        node {
          title
          excerpt
          slug
          featured_media
          better_featured_image {
            wordpress_id
            alt_text
            caption
            description
            media_type
            post
            source_url
          }
        }
      }
    }
}

إنه يعمل بشكل جيد عندما يتم تعيين الصورة المميزة ، لكنه يفشل فشلاً ذريعًا على خلاف ذلك.
ولذا سؤالي: هل توجد أي طريقة في GraphQL للاستعلام عن حقل اختياري؟ لإضافة قيمة افتراضية إلى حقل مطلوب؟

شكرا لك.

التعليق الأكثر فائدة

لا تزال هذه القضية هي أكبر مشكلة لدي مع غاتسبي. سيكون مجرد إرجاع null s إلى كل حقل تم الاستعلام عنه غير موجود في استعلام GraphQL هو أفضل طريقة في رأيي ، حيث إنه من التافه التحقق مما إذا كان الحقل موجودًا في React
مجرد حالة استخدام واجهتها هذا الأسبوع: كان أول رد فعل لعملائي هو حذف جميع منشوراته ، متوقعًا رؤية صفحة لا توجد مشاركات ، حتى يحين الوقت الذي يبدأ فيه في ملء مدونته بالمحتوى ، وهذا ببساطة كسر عملية البناء. لقد واجهت كل المشاكل في العالم لأشرح له سبب نجاحها على هذا النحو.

آخر ، أكثر حداثة كان له علاقة بالقائمة ، حيث أحضر wordpressWpApiMenusMenusItems لعرض القائمة التي أنشأها في لوحة معلومات Wordpress. مرة أخرى ، من الناحية المثالية عدم وجود قائمة لجلبها ، لن أعرض واحدة ، وبدلاً من ذلك تتعطل عملية الإنشاء ، نفس الشيء عند محاولة جلب جميع القوائم للأطفال ، شيء مثل:

wordpressWpApiMenusMenusItems(name: { eq: "Main Menu" }) {
      items {
        wordpress_id
        title
        url
        type
        wordpress_children {
          wordpress_id
          title
          url
          attr
          target
          type
          wordpress_children {
            wordpress_id
            title
            url
            attr
            target
            type
          }
        }
      }
    }

إذا كانت القائمة لا تحتوي على أطفال ، فإننا نواجه نفس المشكلة.

لذلك ، لست متأكدًا مما إذا كان هذا يتماشى مع فلسفة غاتسبي ، لذلك ربما أفترض الكثير ، ولكن سيكون موضع تقدير كبير إذا لم تؤدي استعلامات GraphQL غير الناجحة إلى كسر البنية ، فقم ببساطة بإرجاع القيم الفارغة أو الفارغة للحقول مطلوب ، فسيكون الأمر متروكًا للمطور للتحقق مما إذا كانت القيم موجودة قبل عرضها.
ما رأيك بهذا؟

ال 42 كومينتر

لدي / لدي نفس المشكلة مع المحتوى. هذا هو اقتراحي للعلاقات العامة رقم 2037. لا يزال بحاجة إلى تلميع.
لسوء الحظ ، لا يتعامل مع الصور atm لأنه مع هذا النهج سنحتاج إلى صورة افتراضية لملء الحقل وليس السلوك المتوقع وجود صورة هناك إذا لم يضع المستخدم واحدة. لا أعرف كيف يمكننا تعيين قيمة "شبيهة بالزيف" في حقل صورة ...
أنا أتساءل كيف تتعامل واجهة Graphiql مع هذا النوع من الأشياء. إذا استعلمنا عن حقل غير محدد هناك ، فسيتم إرجاعه فارغًا في هذا الحقل.
على أي حال ، إذا كان لدى شخص ما فكرة للمضي قدمًا ، فأنا مهتم أيضًا.

والمسألة المصاحبة للإشارة: # 1517

MarcCoet لقد لاحظت للتو أن هذه المشكلة بالذات تجعل من المستحيل أيضًا نشر مدونة فارغة. بمعنى ، إذا لم يكن لديك أي منشور في موقع Wordpress الخاص بك على سبيل المثال ، فإنك تواجه Cannot read property 'allWordpressPost' of undefined

نحتاج حقًا إلى طريقة ما لتوجيه تحذير ، بدلاً من الخطأ الكامل في هذه الحالات

أوافق تمامًا ولكني لا أعرف كيف.
أشعر أن هذا شيء يجب حله في gatsby core لأن كل مكون إضافي يشبه CMS سيقع في نفس الفخاخ.
آسف @ KyleAMathews لكني أريد أن أذكرك مرة أخرى هنا. ^ ^ '

لقد حللنا هذه المشكلة عن طريق نشر منشور وهمي مع تعيين جميع الميزات.

لا تزال هذه القضية هي أكبر مشكلة لدي مع غاتسبي. سيكون مجرد إرجاع null s إلى كل حقل تم الاستعلام عنه غير موجود في استعلام GraphQL هو أفضل طريقة في رأيي ، حيث إنه من التافه التحقق مما إذا كان الحقل موجودًا في React
مجرد حالة استخدام واجهتها هذا الأسبوع: كان أول رد فعل لعملائي هو حذف جميع منشوراته ، متوقعًا رؤية صفحة لا توجد مشاركات ، حتى يحين الوقت الذي يبدأ فيه في ملء مدونته بالمحتوى ، وهذا ببساطة كسر عملية البناء. لقد واجهت كل المشاكل في العالم لأشرح له سبب نجاحها على هذا النحو.

آخر ، أكثر حداثة كان له علاقة بالقائمة ، حيث أحضر wordpressWpApiMenusMenusItems لعرض القائمة التي أنشأها في لوحة معلومات Wordpress. مرة أخرى ، من الناحية المثالية عدم وجود قائمة لجلبها ، لن أعرض واحدة ، وبدلاً من ذلك تتعطل عملية الإنشاء ، نفس الشيء عند محاولة جلب جميع القوائم للأطفال ، شيء مثل:

wordpressWpApiMenusMenusItems(name: { eq: "Main Menu" }) {
      items {
        wordpress_id
        title
        url
        type
        wordpress_children {
          wordpress_id
          title
          url
          attr
          target
          type
          wordpress_children {
            wordpress_id
            title
            url
            attr
            target
            type
          }
        }
      }
    }

إذا كانت القائمة لا تحتوي على أطفال ، فإننا نواجه نفس المشكلة.

لذلك ، لست متأكدًا مما إذا كان هذا يتماشى مع فلسفة غاتسبي ، لذلك ربما أفترض الكثير ، ولكن سيكون موضع تقدير كبير إذا لم تؤدي استعلامات GraphQL غير الناجحة إلى كسر البنية ، فقم ببساطة بإرجاع القيم الفارغة أو الفارغة للحقول مطلوب ، فسيكون الأمر متروكًا للمطور للتحقق مما إذا كانت القيم موجودة قبل عرضها.
ما رأيك بهذا؟

@ Unforgiven-wanda هذه أمثلة رائعة عندما يسبب هذا المتاعب! لقد كنت مرتبكًا إلى حد ما بسبب تعرض الأشخاص لهذه المشكلة لأنني دائمًا ما أقوم بإنشاء مواقع الويب الخاصة بي أثناء إضافة محتوى ، لذلك لا تواجه أبدًا مشكلة الرغبة في كتابة استعلام ضد شيء غير موجود بعد.

التفكير في هذا أكثر - أعتقد أنه من الممكن تحويل ما هو الآن خطأ في البناء إلى تحذير. jquense أي أفكار حول هذا تتبادر إلى الذهن؟

@ Unforgiven-wanda هل ترغب في التحقيق في حل ممكن لهذا؟ نحن نستخدم برنامج التحويل البرمجي Relay للتحقق من صحة الاستعلامات وسنحتاج إما إلى خفض مستوى التحذير بطريقة ما أو اكتشاف أخطائه وعدم الخروج عندما يكون استعلامًا يتضمن حقولًا غير موجودة.

لسوء الحظ ، لا توجد طريقة جيدة لإسكات هذا النوع من الأشياء نظرًا لأنه خطأ صعب في GraphQL. حتى إذا كان من الممكن أن تفقد التحقق من صحة الحالات التي تريدها ، على سبيل المثال ، إخطار تحاول الاستعلام عن حقل ما كتبته بشكل خاطئ أو شيء ما. أوافق على أن هذا قد يكون محبطًا ومزعجًا في التطوير ، ولكن هذا قيد صعب لكيفية عمل الرسم البياني ، يمكنه _ فقط_ الاستعلام عن الأشياء المحددة في نظام الكتابة.

في النهاية ، تكمن المشكلة هنا في أنك إذا استنتجت المخطط فقط من بيانات الإدخال ، فأنت مقيد بالضرورة بما تحتويه البيانات. لا توجد أي طريقة لإخبار Graphql بإرجاع قيمة فارغة أو شيء ما للحقول غير الموجودة ، لأنه يحتاج إلى معرفة الكثير من المعلومات _waaay_ قبل ذلك حتى لمحاولة حل هذا الحقل. لا يمكنك أيضًا العمل بشكل عكسي من الاستعلام والقيام بالاستدلال عند هذه النقطة لأن الاستعلامات لا تحتوي على معلومات كافية للقيام بالاستدلال (على سبيل المثال ، لا يمكنك تمييز قائمة من كائن)

فيما يتعلق بما يمكن أن يفعله Gatsby ، فإن واجهة برمجة التطبيقات للتعامل مع هذا موجودة بالفعل لحسن الحظ ، فأنت بحاجة إلى تمديد أنواع الرسم البياني يدويًا وتحديد الحقول التي تريدها دائمًا. قد نكون قادرين على جعل ذلك سهلًا بعض الشيء لتحديد الحقول الإضافية بسرعة ، ولكن بصراحة ، يعد تعريف مخطط GQL مطولًا ويستغرق وقتًا طويلاً بطبيعته. (لاحظ أن Apollo Launchpad لديه طريقة رائعة لتعريف المخططات بسرعة )

تضمين التغريدة سأبذل قصارى جهدي لحل هذه المشكلة ، وإذا نجحت ، فسأحرص على تقديم طلب سحب
سأغلق هذه المشكلة بعد ذلك ، لأنه كما أوضحjquense ، لا يوجد حل واضح في الوقت الحالي.
شكرا لكم جميعا.

يبدو هذا أيضًا واعدًا https://github.com/marmelab/graphql-schema-from-json

jquense أنا أحاول اتباع توصياتك لتوسيع أنواع الرسم البياني يدويًا. ومع ذلك ، فإنني أعمل في بعض القضايا التي سأكون ممتنًا لتعليقاتك.
1) أنا أستخدم setFieldsOnGraphQLNodeType مشابهًا جدًا مثل بعض المكونات الإضافية لتحويل gatsby . هل أنا على الطريق الصحيح أم أن واجهة برمجة تطبيقات gatsby التي كنت تشير إليها؟

2) لقد تمكنت حتى الآن من إضافة المزيد من الأنواع باستخدام ☝️ تلك API. لكنني لم أجد طريقة لإعداد قيمة افتراضية لـ UnionTypes دون الكتابة بالكامل فوق القيم الواردة من API ،

آمل أن يكون هذا منطقيًا ، شكرًا

يعد تعريف مخطط GQL مطولًا ويستغرق وقتًا بطبيعته

ماذا عن نوع بنية GraphQL IDL كما هو الحال في Graphcool GraphQL-up؟ https://github.com/graphcool/graphql-up
(ملاحظة: لم أقوم أبدًا بإنشاء خلفية GraphQL بنفسي وأنا أخطط فقط لاستخدام Graphcool و Apollo و Gatsby عند الحاجة.)

مرحبًا كايل - نحن نواجه هذه المشكلة أيضًا. إنه يمنع إنشاء المزيد من التخطيطات المعيارية التي تحتوي على محتوى متنوع ولكن قالب واحد.

hubertron ، هناك بعض الأعمال الرائعة التي تحدث في # 3344 لإصلاح أخطاء "الحقول المفقودة".

@ Unforgiven-wanda كيف حللت ذلك؟

Kikobeats للأسف لا. بالنسبة لمشروعاتي الشخصية ، احتفظ بصفحة مخفية تحتوي على جميع الحقول للتحايل على هذه المشكلة. ومع ذلك ، اضطررت إلى نقل مشاريع عملائي إلى React-static (بديل لائق لـ Gatsby ، على الرغم من أنها أقل شأناً إلى حد ما) حيث لم أتمكن من شرح سبب نجاحها بهذه الطريقة واستمرت عملية الإنشاء في التعطل لأن شخصًا ما قد يحذف الصفحة المخفية أو العبث بها.

الشيء الوحيد الضروري هو توسيع مخطط GraphQL لإضافة Nullable فوق القيمة

Kikobeats لم أكن على علم بذلك لأنه مضى بعض الوقت منذ أن استخدمت Gatsby.
شكرا لك على المعلومات.

Kikobeats هل يمكنك شرح كيفية توسيع مخطط GraphQL وإضافة Nullable على القيمة أو توفير ارتباط؟ لدي مشكلة مماثلة ولا يمكنني حلها

للأسف لم أجد كيف

أواجه هذه المشكلة مع Gridsome و GraphQL ويبدو أنه من السخف أنه لا يمكنك حذف الإدخال الأخير في المجموعة دون فشل الإصدار. بالتأكيد هذه حالة استخدام ضخمة؟

هذا في الواقع إشكالية:
أعيد استخدام core theme لأتمكن من إعادة استخدامه مع العديد من child themes ، كل شيء يدور حول فكرة كتابة المنشورات في mdx .

__هذه حالة استخدام متوقعة أود أن أقول__. ثم الآن ، مع __FORTH__ child theme أريد توسيع ملفات المنشور $ # mdx frontmatter التي كنت أستخدمها حتى الآن

حتى الآن كنت أستخدم frontmatter مثل

date: 2019.05.16
title: 'hey world'
tags: general
snippet: 'hey snippet'
abstract: 'first post'
---

الذي تمت معالجته بواسطة core theme

الآن مع __FORTH__ child theme أردت إضافة حقل آخر ، type

type: 'javascript'
date: 2019.05.16
title: 'hey world'
tags: general
snippet: 'hey snippet'
abstract: 'first post'
---

لذلك في core theme قمت بتحديث query إلى

          frontmatter {
            type
            date
            title
            snippet
            abstract
          }

وبالطبع ، يتسبب هذا في حدوث خطأ في سمة __FIRST__ الخاصة بي ، نظرًا لأن ملفات mdx هناك لا تحتوي على الحقل الجديد.

الحل الوحيد الآن هو إضافة حقل فارغ type في جميع منشورات __all__ المنشورات السابقة mdx ، وهو أمر لا يمكنني فعله إلا إذا كنت أملك هذه المواقع.

هل هذا مثل هذا؟ ألا يوجد أي شيء يمكنني القيام به بخلاف ما قلته؟

أي حل وجد؟ أواجه نفس المشكلة مع ACF إذا كان أي مكرر فارغًا.

أنا أستخدم Contentful لبيانات الموقع. مشكلة مماثلة ، حقل نص قصير اختياري ، إذا لم يتم تعيينه على مطلوب ولم يتم إدخال أي نص ، ثم يتم الاستعلام عن فواصل الحقول المفقودة الآن.
أي شخص يقرأ هذا هل Contentful لديه إعداد قيمة افتراضي لست على علم به ؟؟
بغض النظر عن ذلك ، سيكون من المذهل أن:

  • يمكن أن ترجع القيمة فارغة (لكن افهم مشكلات التصميم المذكورة أعلاه)
  • كان لدينا خيار وراثة وتجاوز حقول الاستعلام وبالتالي تحديد قيمة افتراضية
  • تحديد جميع حقول الاستعلام يدويًا على النحو الوارد أعلاه
    كان هناك بعض الإشارة إلى التجاوز مع setFieldsOnGraphQLNodeType - هل يمكن لشخص لطيف أن يوجهني في الاتجاه الصحيح حيث قد أتمكن من تحديد العقد يدويًا (نقاط المكافأة لشيء خاص بـ Contentful)؟

تا ❤️

KyleAMathews فقط اعتقدت أنني سأخبر الجميع أيضًا أننا نواجه نفس المشكلة هنا في لندن ، المملكة المتحدة - باستخدام gatsby-source-wordpress

لدي 700 صفحة مأهولة من ترحيل المحتوى.

لقد أضفت 4 حقول مخصصة جديدة إلى الصفحات في Wordpress بعد 300 صفحة حيث تم ملؤها.

لدي الآن 300 صفحة بدون الحقول الأربعة الجديدة و 400 صفحة مع الحقول الأربعة الجديدة ، وأحتاج إلى هذه البيانات لتشغيل المنطق لقائمة / التنقل الأساسية.

أي اقتراحات أو حلول يمكننا استخدامها.

؟

tweetzal ، يمكن أن يساعدك الرمز التالي

if (!function_exists('acf_nullify_empty')) {
    function acf_nullify_empty($value, $post_id, $field) {
        if (empty($value)) {
            return null;
        }
        return $value;
    }
}

add_filter('acf/format_value', 'acf_nullify_empty', 100, 3);

لقد حللت مع محلل على غاتسبي
gatsby-node.js

exports.createResolvers = ({ createResolvers, schema }) => {
  const resolvers = {
    wordpress__PAGEAcfHero_text: {
      list_of_words: {
        resolve(source, args, context, info) {
          if (!source.list_of_words) {
            return info.originalResolver(
              {
                ...source,
                list_of_words: []
              },
              args,
              context,
              info
            )
          } else {
            return info.originalResolver(source, args, context, info)
          }
        },
      },
    },
    wordpress__PAGEAcfMember: {
      socials: {
        resolve(source, args, context, info) {
          if (!source.socials) {
            return info.originalResolver(
              {
                ...source,
                socials: []
              },
              args,
              context,
              info
            )
          } else {
            return info.originalResolver(source, args, context, info)
          }
        },
      },
    }
  }
  createResolvers(resolvers)
}

شكرا يا شباب. مقدر جدا

يوم الثلاثاء 16 يوليو 2019 الساعة 4:11 مساءً. Giacomo Alonzi [email protected]
كتب:

لقد حللت مع محلل على غاتسبي
gatsby-node.js

export.createResolvers = ({createResolvers، schema}) => {
أدوات حل المشكلات = {
wordpress__PAGEAcfHero_text: {
list_of_words: {
حل (مصدر ، صفحات ، سياق ، معلومات) {
إذا (! source.list_of_words) {
عودة info.originalResolver (
{
...مصدر،
list_of_words: []
} ،
أرجس
سياق الكلام،
معلومات
)
} آخر {
إرجاع info.originalResolver (مصدر ، أرجس ، سياق ، معلومات)
}
} ،
} ،
} ،
عضو Wordpress__PAGEAcf: {
الاجتماعية: {
حل (مصدر ، صفحات ، سياق ، معلومات) {
إذا (! source.socials) {
عودة info.originalResolver (
{
...مصدر،
الاجتماعية: []
} ،
أرجس
سياق الكلام،
معلومات
)
} آخر {
إرجاع info.originalResolver (مصدر ، أرجس ، سياق ، معلومات)
}
} ،
} ،
}
}
createResolvers (محللات)
}

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/gatsbyjs/gatsby/issues/2392؟email_source=notifications&email_token=AAS5DVTSGDLWT4GA6K6VZFDP7XQKBA5CNFSM4D6G56NKYY3PNVWWK3TUL52HS4DFVREXG43VM33
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AAS5DVXDMLLA75XOGONHRTDP7XQKBANCNFSM4D6G56NA
.

لقد حللت مع محلل على غاتسبي
gatsby-node.js

exports.createResolvers = ({ createResolvers, schema }) => {
  const resolvers = {
    wordpress__PAGEAcfHero_text: {
      list_of_words: {
        resolve(source, args, context, info) {
          if (!source.list_of_words) {
            return info.originalResolver(
              {
                ...source,
                list_of_words: []
              },
              args,
              context,
              info
            )
          } else {
            return info.originalResolver(source, args, context, info)
          }
        },
      },
    },
    wordpress__PAGEAcfMember: {
      socials: {
        resolve(source, args, context, info) {
          if (!source.socials) {
            return info.originalResolver(
              {
                ...source,
                socials: []
              },
              args,
              context,
              info
            )
          } else {
            return info.originalResolver(source, args, context, info)
          }
        },
      },
    }
  }
  createResolvers(resolvers)
}

هل هذا يعني إنشاء محلل لكل حقل ACF؟ أنا أعمل على شيء يستخدم الكثير من الحقول الفارغة المحتملة.

لقد واجهت للتو هذه المشكلة بالذات مع المكون الإضافي Contentful source. لدي الكثير من الحقول الاختيارية ، ومن المحتمل أن يكون هناك أنواع محتويات فارغة.

أواجه هذه المشكلة أيضًا عند ترحيل موقع Jekyll الخاص بي إلى GatsbyJS. أتمنى أن GraphQL لم تكن صارمة للغاية. في الواقع ، سيكون أمرًا رائعًا أن يكون هناك خيار تهيئة يسمح لـ GraphQL بالتحذير فقط بدلاً من إلقاء خطأ في وقت الإنشاء.

واجهت هذه المشكلة أثناء استخدام Gatsby و Kentico Cloud. لا يبدو أنه يعمل مع حل createResolver. هل أي شخص آخر هنا لديه أي حظ منذ ذلك الحين؟

اكتشفت كتابة مخطط كامل (مع القيم الصحيحة - 0 لـ int ، و false لـ bool ، إلخ) ، ثم دمج الكيانات فوق ذلك. قليلا من جولة طويلة.

لقد واجهت للتو هذه المشكلة بالذات مع المكون الإضافي Contentful source. لدي الكثير من الحقول الاختيارية ، ومن المحتمل أن يكون هناك أنواع محتويات فارغة.

أنا في نفس القارب.

تمكنت من استخدام ما يلي من موقع Gatsby للعناية بالقيمة nullable المتداخلة:

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions
  const typeDefs = `
    type MarkdownRemark implements Node {
      frontmatter: Frontmatter
    }
    type Frontmatter {
      tags: [String!]!
    }
  `
  createTypes(typeDefs)
}

* لا تنس إعادة تشغيل خادم dev لمشاهدة النتائج *

المرجع: https://www.gatsbyjs.org/docs/schema-customization/#nested -types

تمكنت من استخدام ما يلي من موقع Gatsby للعناية بالقيمة nullable المتداخلة:

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions
  const typeDefs = `
    type MarkdownRemark implements Node {
      frontmatter: Frontmatter
    }
    type Frontmatter {
      tags: [String!]!
    }
  `
  createTypes(typeDefs)
}

هل هذا المقتطف من التعليمات البرمجية مكمل لبقية gatsby-node.js؟
أضفت هذا قبل أو بعد الوحدة النمطية export.createPages؟

كانت تواجه نفس المشكلة في سحب مشاركات WordPress التي تحتوي على حقول اختيارية. كنت أتوقع أنهم سيعودون فقط فارغًا إذا لم يكونوا موجودين ولن يفجروا الاستعلام بالكامل ...

يبدو أنه من الشائع أن يكون لديك حقول اختيارية. سوف تستمر في البحث عن حل ، ولكن الاضطرار إلى إنشاء مخطط لكل حقل اختياري محتمل يبدو أشبه بإصلاح أداة مساعدة الشريط.

Ozerich شكرا على الحل ، الذي نجح.

باستخدام Wordpress و ACF ، تستعلم GraphQL عن الحقول وتُرجع قيمة فارغة إذا كانت إحدى التدوينات على الأقل لها قيمة لهذا الحقل.
لنفترض أن لديك حقل acf اختياري beautiful_image ، إذا كانت إحدى مشاركاتك على الأقل تحتوي بالفعل على صورة جميلة ، فستعود GraphQL فارغة لجميع المنشورات التي لا تفعل ذلك ، ولكن إذا لم يتم استخدام حقل اختياري مطلقًا عبر الموقع ، فلا يمكنك الاستعلام دون التسبب في حدوث خطأ.

نفس المشكلة هنا مع Contentful.

هل من الممكن توسيع واجهة GraphQL للسماح بتحديد قيمة افتراضية على أساس كل حقل بحيث إذا لم يكن الحقل موجودًا ، فسيتم تعبئته بالقيمة الافتراضية المحددة في الاستعلام بدلاً من فشل الإنشاء؟

benrobertsonio لقد قدمت لي بعض الدعم عبر البريد الإلكتروني في الثاني من أبريل بخصوص نفس المشكلة (على ما أعتقد).
لدي المكون الإضافي Contentful الذي يسحب المحتوى. كان أحد عناصر المحتوى في Contentful يفتقد إلى البيانات التي كانت تكسر البنية بـ "خطأ في التجميع" وقلت إن "فحص الأمان" سيصلحها - عن طريق إضافة "؟" في طلب البيانات ، مثل هذا (لاحظ؟):

لا يعمل: biography.mediaApprovedQuote.childMarkdownRemark.html
هل يعمل: biography.mediaApprovedQuote؟ .childMarkdownRemark.html

عندما يفقد عنصر المحتوى هذه البيانات ، يتم تركه فارغًا.

هل يمكن تطبيق هذا في مكان آخر؟
لم أتمكن من العثور على مزيد من المعلومات حول هذه التقنية. بن هل تعرف أين يمكننا معرفة المزيد عن هذا كحل محتمل؟

شكرا لك مرة أخرى).

واجهت نفس المشكلة عند استخدام تعليقات staticman وكان حقل اختياري "replyFor"

لقد أضفت القسم التالي في gatsy-node.js وقام بإصلاح المشكلة

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions
  const typeDefs = `
    type CommentsYaml implements Node {
      replyFor: String
    }
  `
  createTypes(typeDefs)
}

تحديد أنواع البيانات بشكل صريح

واجهت نفس المشكلة عند استخدام تعليقات staticman وكان حقل اختياري "replyFor"

لقد أضفت القسم التالي في gatsy-node.js وقام بإصلاح المشكلة

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions
  const typeDefs = `
    type CommentsYaml implements Node {
      replyFor: String
    }
  `
  createTypes(typeDefs)
}

تحديد أنواع البيانات بشكل صريح

أستطيع أن أؤكد أن نفس الأسلوب يعمل مع ستربي (على سبيل المثال اكتب StrapiElement).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات