res object available inside the vars, assertions, scripting, and testing contexts can be invoked as a function to query nested response data.
Think of it as lodash.get() on steroids.
Response query filtering (including
[?] with filter functions and object predicates) works in both Safe Mode and Developer Mode.Examples
| Query | Output |
|---|---|
| res(“customer.address.city”) | bangalore |
| res(“customer.orders.items.amount”) | [10, 20, 30, 40] |
| res(“customer.orders.items.amount[0]“) | 10 |
| res(“..items.amount”) | [10, 20, 30, 40] |
| res(“..amount”) | [10, 20, 30, 40] |
| res(“..items.amount[0]“) | 10 |
| res(“..items[0].amount”) | 10 |
| res(“..items[5].amount”) | undefined |
| res(“..id”) | [“order-1”, 1, 2, “order-2”, 3, 4] |
| res(“customer.orders.foo”) | undefined |
| res(“..customer.foo”) | undefined |
| res(“..address”) | [{ city: “bangalore” }] |
| res(“..address[0]”) | { city: “bangalore” } |
API
Standard dot notation
Deep navigation with double dots
Array indexing
Array filtering with a filter function
Use[?] with a corresponding filter function to select matching items.
Array filtering with an object predicate
Use[?] with an object to match items by property values. This is equivalent to i => i.id === 2 && i.amount === 20.
Array mapping with a mapper function
Use[?] with a function that returns a transformed value to map over items.