استنادًا إلى مستندات GraphQL الرسمية ، حاولت إجراء استعلام باستخدام gatsby-transformer-yaml
https://www.graph.cool/docs/reference/graphql-api/query-api-nia9nushae#traversing -a-single-node
query {
projectsYaml(title: "project1"){
description
keywords
published
}
}
هذا لا يعمل ، الخطأ هو "Argument \"title\" has invalid value \"project1\".\nExpected \"projectsYamlTitleQueryString_2\", found not an object."
جربت أيضًا هذا https://www.graph.cool/docs/reference/graphql-api/query-api-nia9nushae#filtering -by-field
query {
allProjectsYaml(filter: {
title: "project1"
}){
edges{
node{
description
keywords
date
}
}
}
}
الخطأ: Argument \"filter\" has invalid value {title: \"project1\"}.\nIn field \"title\": Expected \"projectsYamlConnectionTitleQueryString_2\", found not an object.",
src /
البيانات/
المشاريع /
-مشروع 1.yml
-مشروع 2.yml
وما إلى ذلك وهلم جرا.
إذا لم ينجح ذلك ، فربما يمكنك اقتراح حل آخر للحصول على البيانات من ملف معين؟
لأنني إذا فعلت فقط projectsYaml
سأحصل على أول واحد فقط ، فإن استخدام allProjectsYaml
سيتركني أقوم بتصفية القائمة في JS ...
معلومات gatsby --clipboard
نظام:
نظام التشغيل: Windows 10
وحدة المعالجة المركزية: x64 Intel (R) Core (TM) i5-6300HQ CPU @ 2.30GHz
الثنائيات:
العقدة: 10.8.0 - D: NodeJSnode.EXE
npm: 6.2.0 - D: NodeJSnpm.CMD
المتصفحات:
الحافة: 42.17134.1.0
الحزم:
غاتسبي: ^ 1.9.277 => 1.9.277
صورة gatsby: ^ 1.0.55 => 1.0.55
رابط gatsby: ^ 1.6.46 => 1.6.46
gatsby-plugin-response-helmet: ^ 2.0.11 => 2.0.11
gatsby-plugin-sharp: ^ 1.6.48 => 1.6.48
نظام ملفات جاتسبي المصدر: ^ 1.5.39 => 1.5.39
غاتسبي محول جسون: ^ 1.0.20 => 1.0.20
محول شارب غاتسبي: ^ 1.6.27 => 1.6.27
محول غاتسبي يامل: ^ 1.5.18 => 1.5.18
خطأ لا يمكن للنظام العثور على المسار المحدد.
خطأ: لا يمكن للنظام العثور على المسار المحدد.
envinfo.js: 1 Function.e.exports.sync
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:7778
envinfo.js: 1 Object.copySync
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:104976
envinfo.js: 1 Object.t.writeSync.e [as writeSync]
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:123499
envinfo.js: 1
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:124274
envinfo.js: 1 Promise.all.then.e
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:124289
use.js: 16 tryCatcher
[npm] / [gatsby-cli] / [bluebird] /js/release/util.js:16:23
الوعد. js: 512 الوعد._settlePromiseFromHandler
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:512:31
الوعد. js: 569 الوعد ._settlePromise
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:569:18
الوعد. js: 614 الوعد ._settlePromise0
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:614:10
الوعد. js: 693 الوعد ._settlePromises
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:693:18
الوعد. js: 638 الوعد ._يفي
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:638:18
promise_array.js: 126 PromiseArray._resolve
[npm] / [gatsby-cli] / [bluebird] /js/release/promise_array.js:126:19
الوعد_array.js: 144 PromiseArray._promise تم الوفاء به
[npm] / [gatsby-cli] / [bluebird] /js/release/promise_array.js:144:14
الوعد. js: 574 الوعد ._settlePromise
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:574:26
الوعد. js: 614 الوعد ._settlePromise0
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:614:10
الوعد. js: 693 الوعد ._settlePromises
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:693:18
خطأ الرفض المبرر
خطأ: لا يمكن للنظام العثور على المسار المحدد.
envinfo.js: 1 Function.e.exports.sync
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:7778
envinfo.js: 1 Object.copySync
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:104976
envinfo.js: 1 Object.t.writeSync.e [as writeSync]
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:123499
envinfo.js: 1
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:124274
envinfo.js: 1 Promise.all.then.e
[npm] / [gatsby-cli] / [envinfo] /dist/envinfo.js:1:124289
use.js: 16 tryCatcher
[npm] / [gatsby-cli] / [bluebird] /js/release/util.js:16:23
الوعد. js: 512 الوعد._settlePromiseFromHandler
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:512:31
الوعد. js: 569 الوعد ._settlePromise
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:569:18
الوعد. js: 614 الوعد ._settlePromise0
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:614:10
الوعد. js: 693 الوعد ._settlePromises
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:693:18
الوعد. js: 638 الوعد ._يفي
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:638:18
promise_array.js: 126 PromiseArray._resolve
[npm] / [gatsby-cli] / [bluebird] /js/release/promise_array.js:126:19
الوعد_array.js: 144 PromiseArray._promise تم الوفاء به
[npm] / [gatsby-cli] / [bluebird] /js/release/promise_array.js:144:14
الوعد. js: 574 الوعد ._settlePromise
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:574:26
الوعد. js: 614 الوعد ._settlePromise0
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:614:10
الوعد. js: 693 الوعد ._settlePromises
[npm] / [gatsby-cli] / [bluebird] /js/release/promise.js:693:18
(المتصفحات خاطئة ، لدي أوبرا وكروم وفايرفوكس ، لكن لا أعتقد أن هذا مناسب.
gatsby-config.js
: module.exports = {
siteMetadata: {
title: 'xxx',
},
plugins: [
'gatsby-plugin-react-helmet',
'gatsby-transformer-json',
'gatsby-transformer-sharp',
'gatsby-transformer-yaml',
'gatsby-plugin-sharp',
{
resolve: 'gatsby-source-filesystem',
options: {
name: 'data',
path: './src/data',
},
},
{
resolve: 'gatsby-source-filesystem',
options: {
name: 'projects',
path: './src/data/projects',
},
},
{
resolve: 'gatsby-source-filesystem',
options: {
name: 'img',
path: './src/assets/images',
},
},
],
}
package.json
: غير متاح
gatsby-node.js
: غير متاح
gatsby-browser.js
: غير متاح
gatsby-ssr.js
: غير متاح
يرجى التحقق من https://www.gatsbyjs.org/docs/graphql-reference/#filter - يستخدم gatsby عوامل التشغيل للتصفية ، لذا فهو أكثر مرونة - في حالتك ربما ترغب في استخدام:
query { projectsYaml(title: { eq: "project1"})
- eq
عنوان المعنى يساوي "project1" - يسمح المشغلون الآخرون باستثناء ne
، باستخدام regex وما إلى ذلك
التعليق الأكثر فائدة
يرجى التحقق من https://www.gatsbyjs.org/docs/graphql-reference/#filter - يستخدم gatsby عوامل التشغيل للتصفية ، لذا فهو أكثر مرونة - في حالتك ربما ترغب في استخدام:
query { projectsYaml(title: { eq: "project1"})
-eq
عنوان المعنى يساوي "project1" - يسمح المشغلون الآخرون باستثناءne
، باستخدام regex وما إلى ذلك