skip to Main Content

I am trying to build a request with Strapi filtering the json response, depending on a string contained in an array of options.
Here is the Json :

{
"data": [
    {
        "id": 1,
        "attributes": {
            "createdAt": "2023-03-16T10:32:35.724Z",
            "updatedAt": "2023-04-07T15:05:15.046Z",
            "publishedAt": "2023-03-16T10:33:04.365Z",
            "TitleSupplier": "Catalogue Casio",
            "GammeSupplier": "Fournitures Scolaires",
            "MarqueSupplier": "Casio",
            "Couleur": "#DB3938",
            "Annee": "2023",
            "Gamme": [
                "Fournitures Scolaires",
                "Fournitures de Bureau"
            ],
            "CouleurGamme": null
        }
    },
    {
        "id": 2,
        "attributes": {
            "createdAt": "2023-03-17T14:16:19.454Z",
            "updatedAt": "2023-04-07T15:03:31.486Z",
            "publishedAt": "2023-03-17T14:16:29.716Z",
            "TitleSupplier": "Catalogue Canson",
            "GammeSupplier": "Fournitures Scolaires",
            "MarqueSupplier": "Canson",
            "Couleur": "#DB3938",
            "Annee": "2023",
            "Gamme": [
                "Fournitures Scolaires"
            ],
            "CouleurGamme": null
        }
    },
    {
        "id": 5,
        "attributes": {
            "createdAt": "2023-03-30T10:54:00.894Z",
            "updatedAt": "2023-04-07T15:04:54.465Z",
            "publishedAt": "2023-03-30T10:54:01.982Z",
            "TitleSupplier": "Catalogue Apli-Agipa",
            "GammeSupplier": "Fournitures Scolaires",
            "MarqueSupplier": "Apli-Agipa",
            "Couleur": "#DD4343",
            "Annee": "2023",
            "Gamme": [
                "Fournitures Scolaires",
                "Fournitures de Bureau"
            ],
            "CouleurGamme": null
        }
    },
    {
        "id": 6,
        "attributes": {
            "createdAt": "2023-04-07T11:27:54.716Z",
            "updatedAt": "2023-04-07T15:04:44.908Z",
            "publishedAt": "2023-04-07T11:28:03.198Z",
            "TitleSupplier": "Catalogue Ancor",
            "GammeSupplier": "Fournitures Scolaires",
            "MarqueSupplier": "Ancor",
            "Couleur": "#3498A8",
            "Annee": "2023",
            "Gamme": [
                "Fournitures Scolaires",
                "Fournitures de Bureau"
            ],
            "CouleurGamme": "#3498A8"
        }
    },
    {
        "id": 7,
        "attributes": {
            "createdAt": "2023-04-07T14:29:56.349Z",
            "updatedAt": "2023-04-07T15:05:04.770Z",
            "publishedAt": "2023-04-07T14:29:58.437Z",
            "TitleSupplier": "Catalogue CEP",
            "GammeSupplier": "Fournitures de Bureau",
            "MarqueSupplier": "CEP",
            "Couleur": "#3498A8",
            "Annee": "2023",
            "Gamme": [
                "Fournitures Scolaires",
                "Fournitures de Bureau"
            ],
            "CouleurGamme": null
        }
    },
    {
        "id": 8,
        "attributes": {
            "createdAt": "2023-04-07T14:38:21.485Z",
            "updatedAt": "2023-04-07T15:06:22.568Z",
            "publishedAt": "2023-04-07T14:38:22.596Z",
            "TitleSupplier": "Catalogue Conquérant",
            "GammeSupplier": "Fournitures Scolaires",
            "MarqueSupplier": "Conquérant",
            "Couleur": "#3498A8",
            "Annee": "2023",
            "Gamme": [
                "Fournitures Scolaires",
                "Mobilier de Bureau"
            ],
            "CouleurGamme": null
        }
    }
],
"meta": {
    "pagination": {
        "page": 1,
        "pageSize": 25,
        "pageCount": 1,
        "total": 6
    }
}

}

I am trying to create a request that says : Please send me all the catalogs for which the "Gamme" equals to "Mobilier de bureau".

Here is the requests i have tried so far :

 http://localhost:1337/api/supplier-catalogs?filters/[Gamme][$in][0]=Mobilier de Bureau


http://localhost:1337/api/supplier-catalogs?filters/[Gamme][$in]=Mobilier de Bureau

http://localhost:1337/api/supplier-catalogs?filters/[Gamme][$eq]=Mobilier de Bureau

This was the most obvious options while i was reading the doc but all of them keep sending me all the array instead of the filtered query.

Thanks for the help,

2

Answers


  1. Chosen as BEST ANSWER

    Following antokhio's comment, I am posting the solution to the answer. Strapi by itself doesn't provide the data like this:

    {
      "Gamme": [
        "Fournitures Scolaires",
        "Fournitures de Bureau"
      ]
    }
    

    But, there is a plugin called "Multi Select" that can provide this type of JSON Answer. It was the one I was using. To be able to create the good request I used the "Contains" instead of "Eq" filter operator, like this:

    http://localhost:1337/api/supplier-catalogs?filters[Gamme][$contains]=Mobilier de bureau&sort[0]=TitleSupplier&populate=*
    

    Thanks,


  2. strapi don’t have array types that look like this in response:

    {
      "Gamme": [
        "Fournitures Scolaires",
        "Fournitures de Bureau"
        ],
    }
    

    If this is raw strapi resopnse then you are likely using json field, and you can’t search on json field by default in strapi.

    You can search on relations and components. You can’t search on DynamicZones and json fields.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search