Loops
Last updated
Last updated
Loops are used to iterate over a set of items, or run a set of steps a certain number of times.
There are a few different kinds of loops that you can use in Xano.
A For Each loop is designed to iterate over a list of items, such as all records returned by a database query, or items returned from an external API request.
If you are iterating through a list of database records, set the return type in the query to stream to enable super memory-efficient looping. This is especially helpful the larger the list is.
A For loop is used to repeat a stack of steps a certain number of times.
Refer to the For Each loop instructions to see how it works. The only difference between a For and a For Each loop is...
In a For loop, you need to specify the number of times the loop runs.
Because we aren't building the loop against a list of items directly, we don't have a variable that houses the individual item. Instead, Xano keeps track of which iteration is running inside of an index variable, which you can set here.
A While loop is used to repeat a set of steps infinitely as long as the condition(s) defined evaluate as true.
Proceed with caution when using While loops, as they can not be easily stopped once started.
To ensure that your loop works as intended, make sure to stop the loop with a Break statement while testing and debugging.
If you are concerned that you have entered an infinite loop and want to break it, learn how to restart your instance here.
You'll use the expression builder to define the conditions that tell the loop whether or not it should continue.
Breaks the currently running loop, meaning the loop is exited and the next function will run.
Immediately begins executing the next iteration of the loop. This is very useful for conditionals inside of loops that determine what happens to the item being iterated through.
This will remove the item being iterated through from the parent list.
Each conditional has four different components.
Conditional Type
The conditional type determines how this condition is weighted in the final return. You can choose between AND and OR. AND conditionals require the present conditional and any others before it to be satisfied, such as "where the date is before today AND the user is an admin". OR conditionals do not require any other conditionals to be satisfied, such as "if the user is an admin OR if the user is a manager".
Left Value
This is the first value you're using in the conditional. In a database query, this is usually going to be a column that you want to check against.
Operators
Please note that operators may differ based on where you are building the expression. Database queries will have different operators available than regular conditional statements.
Equals (==) - an exact match
Not Equals (!=) - does not equal
Equals with type matching (===) - an exact value match and an exact type match
Ex. Variable var_1 has a value of 123, with a type of text. You set up a conditional statement to check if var_1 === 123, but your value in the conditional statement is of type integer. This would return false, because the types do not match.
Not equals with type matching (!==) - does not equal value or type, similar to ===
Greater than (>) - the value on the left is greater than the value on the right
Greater than or equals (≥) - the value on the left is greater than or equals to the value on the right.
Less than (<) - the value on the left is less than the value on the right.
Less than or equals (≤) - the value on the left is less than or equals to the value on the right.
LIKE - Used for comparing text. Like is case-insensitive and compares if a text string is like another text string. It can be thought of as equals for text but upper case and lower case does not matter.
NOT LIKE - Used for comparing text. Not Like is case-insensitive and compares if a text string is not like another. It is like not equals for text but upper case and lower case does not matter.
INCLUDES - Used for comparing text. Includes is a flexible operator and is case-insensitive. It is able to determine if there is a partial match in a text string.
DOES NOT INCLUDE - Used for comparing text. Does not include determines if a text string is not included in another text string.
IN - If a single value is found in an array (list). Start with the single value on the left side and the right side should contain the array.
NOT IN - If a single value is not found in an array (list). The single value should be on the left side and the array on the right side.
REGEX MATCHES - Regular Expression used for finding patterns in text.
REGEX DOES NOT MATCH - Regular Expression used for finding a pattern that does not match in text.
OVERLAPS - Used for comparing two arrays. Overlaps determines if any values in one array are present in the second array.
DOES NOT OVERLAP - Used for comparing two arrays. Does not overlaps determines if no values in the first array are present in the second array.
CONTAINS - Contains is an advanced filter used for JSON and arrays. It looks for an exact schema match.
DOES NOT CONTAIN - Does not contain is the opposite of contains. It determines if there is not an exact schema match.
The right value is whatever you are checking against the left value. This could be a hardcoded value, a variable, or even a database field from the same record.