> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # Method name: afterQuery(item: object, context: HookContext) # Method package: wixDataHooks # Method menu location: wixDataHooks --> afterQuery # Method Link: https://dev.wix.com/docs/velo/events-service-plugins/data/hooks/wix-data-hooks/after-query.md # Method Description: A hook that is triggered after a `find` operation, for each of the items in the query results. The `afterQuery()` hook runs when: + The [`find`](wix-data.WixDataQuery.html#find) function is called. + An action is performed on a dataset that retrieves items from the collection. + The collection is viewed in the CMS. + An item is exported from the collection. The hook runs once for each item in the collection. Return an object or a Promise that resolves to an object from the `afterQuery()` function. The returned object will be used as the result of the call to the [`find`](wix-data.WixDataQuery.html#find) function instead of the actual item found in the collection. If returning a Promise, the object is used as the result, whether the Promise is fulfilled or rejected. If the returned value is of the wrong type, the value is ignored. A rejected Promise also calls the [`onFailure()`](#onFailure) hook if it has been registered. > **Note:** > We recommend implementing `afterQuery()` with in-memory operations only. Don't use network calls such as REST API requests > or other wix-data operations, as these can lead to timeouts and issues loading collection data. # Method Code Examples: *** Note: do not assume any prop names or enum values other than the ones in the example. ## An afterQuery hook ```javascript // In data.js export function myCollection_afterQuery(item, context) { let hookContext = context; // see below // some changes to the received item return item; } /* * hookContext: * * { * "collectionName": "myCollection", * "userId": "f45jf8d2-grkj-2opd-4ovk-9rfj4wo5tvj3", * "userRole": "siteOwner" * } */ ``` ## Change the item returned by `find()` using an afterQuery hook ```javascript // In data.js export function myCollection_afterQuery(item, context) { let hookContext = context; // see below // add a full_name property to the item being returned item.full_name = item.first_name + " " + item.last_name; return item; } /* * hookContext: * * { * "collectionName": "myCollection", * "userId": "f45jf8d2-grkj-2opd-4ovk-9rfj4wo5tvj3", * "userRole": "siteOwner" * } */ ``` ---