Repeater Issue

The database query should be outside of the onItemReady() event handler. This code seemed to work for me:

$w.onReady(function () {

   var nd = new Date();
   wixData.query("FCC-EVENTS")
      .gt("eventStartDt", nd)
      .limit(3)
      .ascending("eventStartDt")
      .find()
      .then((results) => {
         $w("#repeater1").data = results.items;
      });

   $w("#repeater1").onItemReady(($item, itemData, index) => {

      if (itemData.eventImage) {
         $item("#eventImage").src = itemData.eventImage;
      } else {
         $item("#eventImage").src =  "image://v1/c601a6_7f57cef53b7e4fef8b2a59e45ec54b3e~mv2.jpg/300_200/fcc_300_200.jpg";
      }

      $item("#eventTitle").text = itemData.title;
      $item("#eventStartDt").text = itemData.eventStartDt.toString();

      const date = itemData.eventStartDt;
      // Set the text element to display the date using the user's settings
      const options = { day: "2-digit", month: "long", year: "numeric" };
      // Sets the property of the text element to be a string representing today's date in UK English
      $item("#eventStartDt").text = date.toLocaleDateString('en-GB', options).toUpperCase();

      if ($item("#eventCategory")) {
         $item("#eventCategory").text = itemData.eventCategory;
      } else {
         $item("#eventCategory").text = "";
      }

      //Hide the Loading soon alert
      $item("#eventsLoadingText").hide();
   });
});

Note that the Repeater data property is set to the results of the query. The onItemReady() event handler is called when the Repeater data is set, and handles each item of the repeater.

See the onItemReady() API for more information.