Pertanyaan Memfilter Contentful Query pada Objek Tertaut


Saya mencoba memanfaatkan Contentful pada proyek saya saat ini dan saya mencoba memahami cara memfilter hasil kueri saya berdasarkan bidang dalam objek tertaut.

Objek level teratas saya berisi Tautan yang didefinisikan sebagai berikut:

  "name": "Service_Description",
  "fields": [
{
  "name": "Header",
  "id": "header",
  "type": "Link",
  "linkType": "Entry",
  "required": true,
  "validations": [
    {
      "linkContentType": [
        "offerGeneral"
      ]
    }
  ],
  "localized": false,
  "disabled": false,
  "omitted": false
},

Bidang "tajuk" ini tertaut ke jenis konten lain yang memiliki definisi ini:

  "fields": [
{
  "name": "General",
  "id": "general",
  "type": "Link",
  "linkType": "Entry",
  "required": true,
  "validations": [
    {
      "linkContentType": [
        "genericGeneral"
      ]
    }
  ],
  "localized": false,
  "disabled": false,
  "omitted": false
},

yang kemudian tertaut ke tingkat terendah:

"fields": [{
  "name": "TagList",
  "id": "tagList",
  "type": "Array",
  "items": {
    "type": "Link",
    "linkType": "Entry",
    "validations": [
      {
        "linkContentType": [
          "tag"
        ]
      }
    ]
  },
  "validations": []
}

di mana tagList adalah larik tag yang mungkin dimiliki oleh konten ini.

Saya ingin dapat menjalankan kueri dari objek tingkat atas yang mengatakan dapatkan saya X jumlah entri konten "Service_Description" di mana ini berisi tag dari daftar tag yang disediakan.

Di PostMan, saya telah menjalankan ini:

https://cdn.contentful.com/spaces/{SPACE_ID}/entries?access_token={ACCESS_TOKEN}&content_type=serviceDescription&include=3

Saya mencoba menambahkan filter seperti ini:

fields.header.fields.general.fields.tagList.sys.id%5Bin%5D={TAG_SYS_ID}

Ini jelas salah, tetapi saya telah berjuang dengan cara menjalani hubungan ini untuk mencapai tujuan saya. Membaca dengan teliti dokumentasi ini tampaknya ada hubungannya dengan termasuk, tapi aku tidak yakin bagaimana memperbaiki masalah.

Ada arahan tentang bagaimana mencapai tujuan saya atau apakah ini mungkin?


5
2018-06-22 23:58


asal


Jawaban:


Sayangnya apa yang Anda minta saat ini tidak mungkin di Contentful.

Kami menghadapi masalah yang sangat mirip dengan jenis konten bertingkat / referensi dan dukungan mengatakan itu tidak mungkin.

Kami akhirnya menulis sistem yang sangat rumit yang memungkinkan kami melakukan apa yang Anda inginkan. Pada dasarnya melakukan pencarian teks lengkap untuk konten yang direferensikan dan kemudian menanyakan semua entri orang tua. Kami kemudian mencocokkan hubungan dengan mengiterasi ulang orang tua untuk menemukan hubungan.

Maaf itu tidak mudah. Semoga para devs mengerjakan sesuatu yang memperbaiki komplikasi ini. Kami telah membawa ini ke perhatian mereka.


2
2017-07-05 13:10



Ini sekarang mungkin, sesuatu yang saya yakini dipecahkan dalam API berdasarkan permintaan untuk fungsi ini. Anda dapat melihat utas sini.

Inti dari ini adalah bahwa Anda harus query pada entri yang telah menghubungkan entri dan kemudian memasukkan contentType untuk entri terkait dalam permintaan seperti:

contentfulClient.getEntries({
  'content_type': 'location',
  'fields.market.fields.marketName': 'New York',
  'fields.market.sys.contentType.sys.id': 'marketRegion'
})


2
2017-08-02 18:37