This tutorial for Velo beginners explains how to display database collection content in a repeater using code.
Note You can also display database content in a repeater without any code using a dataset, but using code provides you with additional functionality and options.
Database collections are where you store your site's data. For example, if you have a real estate site, you'll store details about each property in a collection. If you have a custom form on your site, you'll store the answers to the form in a collection.
You might want to display your database collection content in a repeater. Repeaters are lists of items. Each item has the same design and layout, but different content. If you have a real estate site, you can display each property and its details in a different repeater item.
To display database content in a repeater, we'll do the following:
To query a collection, you'll need to get the collection ID:
Select the Databases tab in the Velo sidebar (Wix Editor) or Code sidebar (Wix Studio).
Hover over your collection, click the Show More icon and select Edit Settings.
Copy the collection ID to use in your code.
Once you have the collection ID you can query the collection. We'll start by importing the wix-data
module, which contains the data query()
function. The wix-data
APIs contain functionality for working with your database collections with code.
We run the query on our MyCollection
database collection:
query()
function on the MyCollection
database collection.find()
function.The query result items
are an array of objects representing each item in your database collection. For example, if you have database collection fields with field IDs named title
, price
, image
, and url
, you'll have properties in each object in your results object items
array called title
, price
, image
, and url
.
Setting a repeater's data adds new items to the repeater. We take the results of the query that we extracted from the database collection and set it as the repeater's data.
Setting a repeater's data also triggers the repeater's onItemReady() event handler.
Now we need to specify which field from the queried database collection content connects to each repeater element. For example, the database field called title
might connect to a text element in the repeater, and a database field called url
might connect to a read more button's link
property.
We make the connection using the onItemReady()
function, which is used to apply the repeated item's data to the properties of the repeated elements. onItemReady()
is an event handler that is triggered when the items of the repeater are ready to be loaded. The event handler runs for each item in the repeater.
In the code below, title
, price
, image
, and url
are field IDs from the MyCollection
database collection.
$item
is a special selector which selects elements in a specific repeater item. The onItemReady()
function loops through each item in the repeater and connects the repeater elements in each item with the queried data.
Note The code for onItemReady() must be located before the code for setting the repeater's data.
After applying the code to your page, you'll see your database content displayed in your repeater.
As an additional step, you can optionally chain WixDataQuery
functions to your query to filter, sort, and limit the results of the query.
For example, we filtered the items so that only properties whose price is less than $500,000 appear in the repeater. We also sorted the items in alphabetical order according to the property title. To do this we chained a 'less than' lt()
filter and a descending()
sort to the query, before executing the query with the find()
function:
Here is the complete code for the example: