Already took a look into CONSOLE ???
In this example you will see how --> .distinct() <--- is working.
​
To demonstrate this function, i took the example which you already know .....
​
https://russian-dima.wixsite.com/meinewebsite/repeater-problem
​
These are all the comments given in this example here .....
​
https://russian-dima.wixsite.com/meinewebsite/autoupdate-picture
​
We want to find only unique comments of a unique user, using ---> .distinct()
Searching for comments of USER ---> 57da6cbf-baea-4248-8b1c-e7e82fcc01f8 --->
01/19 - 01/23
Klicken Sie hier, um eigene Inhalte hinzuzufügen oder verbinden Sie Datenquellen aus Ihrer Kollektion.
01/19 - 01/23
Klicken Sie hier, um eigene Inhalte hinzuzufügen oder verbinden Sie Datenquellen aus Ihrer Kollektion.
01/19 - 01/23
Klicken Sie hier, um eigene Inhalte hinzuzufügen oder verbinden Sie Datenquellen aus Ihrer Kollektion.
Importing neccassery APIs......
import wixUsers from 'wix-users';
import wixData from 'wix-data';
Creating one GLOBAL-VARIABLE...
var userId;
First-Step: Getting the right USER-ID (happens emidiately when page is ready).
$w.onReady(function() {console.log("START")
userId = wixUsers.currentUser.id
console.log ("Your-User-ID : " + wixUsers.currentUser.id)
})
Step-II: Creating the DISTINCT-FUNCTION.......
function myFunction () {
wixData.query("Comments2")
.eq("_owner", "57da6cbf-baea-4248-8b1c-e7e82fcc01f8") //<----- here normaly the --> userId ! ! ! ---> .eq("_owner", userId)
.distinct("comment")
.then((results) => {
if (results.items.length > 0) {
let items = results._items;
let firstItem = items[0];
let length = results.length;
console.log(results)
console.log("Data-Length : " + length)
console.log(items)
let myNewData = [] //<------------- creating new Array[] where to put in new data.
for (var i = 0; i < length; i++) {
myNewData.push({"_id": ( i ).toString(), "comment": items[ i ]}) //<------- creating new Object{} NECCASSERY ! ! ! .
}
console.log(myNewData)
$w('#repeater1').data = myNewData; //<------- Send DATA to ---> REPEATER (myNewData is now an OBJECT ! ! ! )
$w("#repeater1").onItemReady(($item, itemData, index) => {
$item("#ID").text = itemData._id; //<------- populating REPEATER-VALUES / DATA --> (generated-ID)
$item("#COMMENT").text = itemData.comment; //<------- populating REPEATER-VALUES / DATA --> ( comment )
})
}
else { }
})
.catch((error) => {
let errorMsg = error.message;
let code = error.code;
});
}
Step-III: Connection a BUTTON with the DISTINCT-function, to controll it....
export function button1_click(event) { myFunction() }
Explanation
After running DESTINCT-function, you will get not the same RESULTS and also not the same STRUCTURE back, like for example, when using -----> .find( ).
​
DISTINCT gives you back, just the values of the current REFERENCE-COLUMN ! ! ! + The USER-ID ! ! !
​
RESULTS
<--- Gives back the user-ID ---> THIS WAS MISSING ! ! ! !
ITEMS
ATTENTION ! ! ! ---> NOT --> results.items !! wrong !! ----> results._items !!! right !!!
Our own created OBJECT with NO-DUBLICATES ! ---> let myNewData = []
for (var i = 0; i < length; i++) {
​
myNewData.push( { "_id": ( i ).toString( ), "comment": items[ i ] } ) //<------- creating new Object{} NECCASSERY ! ! ! .
​
}