I'm trying to deep filter API response from Strapi backend from a custom controller with entityService, but seems like I'm doing something wrong.

According to the documentation: Strapi filter data

I can have multiple conditions there.

  • Strapi Version: 4.0.0
  • Operating System: macOS
  • Database: postgresql 14
  • Node Version: v14.17.6
  • NPM Version: 7.21.1
  • Yarn Version: 1.22.17

My controller code:

 "use strict"; /** * occasion controller */ const { createCoreController } = require("@strapi/strapi").factories; const date = new Date().toLocaleString("en-US", { timeZone: "America/Los_Angeles", }); const dateClean = date.slice(0, 10).split("/"); const dateISOCompat = [dateClean[2], dateClean[0], dateClean[1]].join("-"); module.exports = createCoreController( "api::occasion.occasion", ({ strapi }) => ({ async find(ctx) { const { query } = ctx.params; const entity = await strapi.entityService.findMany( "api::occasion.occasion", { ...query, populate: { image: true, button: true, category: true, }, filters: { $and: [ { publishedAt: { $notNull: true, }, $and: [ { category: { startDate: { $lt: dateISOCompat, }, }, category: { endDate: { $gt: dateISOCompat, }, }, }, ], }, ], }, } ); return entity; }, }) ); 

Date comparison should work I think, my assumption that something wrong with the syntax of filter deep nested conditions.

I still can get data from the API endpoint, but it didn't check for the date range...

My response looks like this:

[ { "id": 1, "title": "Are you choosing a cake for the most important event in your life?", "subtitle": "", "createdAt": "2021-12-09T23:49:24.518Z", "updatedAt": "2021-12-30T20:59:28.264Z", "publishedAt": "2021-12-30T20:59:28.261Z", "image": { "id": 10, "name": "WeddingDate.jpg", "alternativeText": "WeddingDate.jpg", "caption": "WeddingDate.jpg", "width": 2000, "height": 1335, "formats": { "large": { "ext": ".jpg", "url": "/uploads/large_Wedding_Date_6c9d20762c.jpg", "hash": "large_Wedding_Date_6c9d20762c", "mime": "image/jpeg", "name": "large_WeddingDate.jpg", "path": null, "size": 125.61, "width": 1000, "height": 668 }, "small": { "ext": ".jpg", "url": "/uploads/small_Wedding_Date_6c9d20762c.jpg", "hash": "small_Wedding_Date_6c9d20762c", "mime": "image/jpeg", "name": "small_WeddingDate.jpg", "path": null, "size": 43.24, "width": 500, "height": 334 }, "medium": { "ext": ".jpg", "url": "/uploads/medium_Wedding_Date_6c9d20762c.jpg", "hash": "medium_Wedding_Date_6c9d20762c", "mime": "image/jpeg", "name": "medium_WeddingDate.jpg", "path": null, "size": 79.71, "width": 750, "height": 501 }, "thumbnail": { "ext": ".jpg", "url": "/uploads/thumbnail_Wedding_Date_6c9d20762c.jpg", "hash": "thumbnail_Wedding_Date_6c9d20762c", "mime": "image/jpeg", "name": "thumbnail_WeddingDate.jpg", "path": null, "size": 12.95, "width": 234, "height": 156 } }, "hash": "Wedding_Date_6c9d20762c", "ext": ".jpg", "mime": "image/jpeg", "size": 383.44, "url": "/uploads/Wedding_Date_6c9d20762c.jpg", "previewUrl": null, "provider": "local", "provider_metadata": null, "createdAt": "2021-12-09T19:34:37.053Z", "updatedAt": "2021-12-09T19:34:37.053Z" }, "button": { "id": 1, "text": "Order Now", "buttonURL": "/products/", "style": "Fill" }, "category": { "id": 1, "name": "Regular Occasions", "startDate": "2022-01-01", "endDate": "2024-12-31", "createdAt": "2021-12-09T23:49:59.083Z", "updatedAt": "2021-12-09T23:56:21.637Z", "publishedAt": "2021-12-09T23:55:11.891Z" } }, { "id": 2, "title": "Make your birthday unforgettable and bright!", "subtitle": "", "createdAt": "2021-12-09T23:53:15.734Z", "updatedAt": "2021-12-22T22:06:15.962Z", "publishedAt": "2021-12-09T23:54:55.136Z", "image": { "id": 3, "name": "birthday_hero.jpg", "alternativeText": "birthday_hero.jpg", "caption": "birthday_hero.jpg", "width": 1600, "height": 1066, "formats": { "large": { "ext": ".jpg", "url": "/uploads/large_birthday_hero_af457271ec.jpg", "hash": "large_birthday_hero_af457271ec", "mime": "image/jpeg", "name": "large_birthday_hero.jpg", "path": null, "size": 56.99, "width": 1000, "height": 666 }, "small": { "ext": ".jpg", "url": "/uploads/small_birthday_hero_af457271ec.jpg", "hash": "small_birthday_hero_af457271ec", "mime": "image/jpeg", "name": "small_birthday_hero.jpg", "path": null, "size": 20.62, "width": 500, "height": 333 }, "medium": { "ext": ".jpg", "url": "/uploads/medium_birthday_hero_af457271ec.jpg", "hash": "medium_birthday_hero_af457271ec", "mime": "image/jpeg", "name": "medium_birthday_hero.jpg", "path": null, "size": 37.06, "width": 750, "height": 500 }, "thumbnail": { "ext": ".jpg", "url": "/uploads/thumbnail_birthday_hero_af457271ec.jpg", "hash": "thumbnail_birthday_hero_af457271ec", "mime": "image/jpeg", "name": "thumbnail_birthday_hero.jpg", "path": null, "size": 6.63, "width": 234, "height": 156 } }, "hash": "birthday_hero_af457271ec", "ext": ".jpg", "mime": "image/jpeg", "size": 108.92, "url": "/uploads/birthday_hero_af457271ec.jpg", "previewUrl": null, "provider": "local", "provider_metadata": null, "createdAt": "2021-12-09T19:34:35.479Z", "updatedAt": "2021-12-09T19:34:35.479Z" }, "button": { "id": 2, "text": "Order Now", "buttonURL": "/products/", "style": "Fill" }, "category": { "id": 1, "name": "Regular Occasions", "startDate": "2022-01-01", "endDate": "2024-12-31", "createdAt": "2021-12-09T23:49:59.083Z", "updatedAt": "2021-12-09T23:56:21.637Z", "publishedAt": "2021-12-09T23:55:11.891Z" } }, { "id": 3, "title": "How to Express Words of Love on Father's Day?", "subtitle": "", "createdAt": "2021-12-10T00:01:49.722Z", "updatedAt": "2021-12-22T22:06:10.665Z", "publishedAt": "2021-12-10T00:13:18.089Z", "image": { "id": 15, "name": "FathersDay.jpg", "alternativeText": "FathersDay.jpg", "caption": "FathersDay.jpg", "width": 1600, "height": 664, "formats": { "large": { "ext": ".jpg", "url": "/uploads/large_Fathers_Day_7020aae6a3.jpg", "hash": "large_Fathers_Day_7020aae6a3", "mime": "image/jpeg", "name": "large_FathersDay.jpg", "path": null, "size": 22.33, "width": 1000, "height": 415 }, "small": { "ext": ".jpg", "url": "/uploads/small_Fathers_Day_7020aae6a3.jpg", "hash": "small_Fathers_Day_7020aae6a3", "mime": "image/jpeg", "name": "small_FathersDay.jpg", "path": null, "size": 8.88, "width": 500, "height": 208 }, "medium": { "ext": ".jpg", "url": "/uploads/medium_Fathers_Day_7020aae6a3.jpg", "hash": "medium_Fathers_Day_7020aae6a3", "mime": "image/jpeg", "name": "medium_FathersDay.jpg", "path": null, "size": 15.33, "width": 750, "height": 311 }, "thumbnail": { "ext": ".jpg", "url": "/uploads/thumbnail_Fathers_Day_7020aae6a3.jpg", "hash": "thumbnail_Fathers_Day_7020aae6a3", "mime": "image/jpeg", "name": "thumbnail_FathersDay.jpg", "path": null, "size": 3.45, "width": 245, "height": 102 } }, "hash": "Fathers_Day_7020aae6a3", "ext": ".jpg", "mime": "image/jpeg", "size": 41.41, "url": "/uploads/Fathers_Day_7020aae6a3.jpg", "previewUrl": null, "provider": "local", "provider_metadata": null, "createdAt": "2021-12-10T00:13:06.981Z", "updatedAt": "2021-12-10T00:13:06.981Z" }, "button": { "id": 3, "text": "Order Now", "buttonURL": "/products/", "style": "Fill" }, "category": { "id": 3, "name": "Father's Day", "startDate": "2022-06-01", "endDate": "2022-06-19", "createdAt": "2021-12-10T00:03:52.295Z", "updatedAt": "2021-12-10T00:03:53.286Z", "publishedAt": "2021-12-10T00:03:53.283Z" } } 

.........

Related questions 6 Filter by date range 0 Filtering by date in Ember 0 Date filter using sapui5 Related questions 6 Filter by date range 0 Filtering by date in Ember 0 Date filter using sapui5 0 How to create date filter in javascript? 1 How to filter data based on date? 1 fetch data using some condition in strapi 2 Is there a way to filter json data format field in strapi? 0 How to filter chart.js with datepicker? 0 Querying a strapi database by date with less than operator 2 Strapi date format using javascript Load 7 more related questions Show fewer related questions

Reset to default

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.