Thanks for the update Yafim. I actually managed to get the server code to access and return a collection in the end - I’m not 100% sure what made it work, but note the use of “async” and "await. Eventually it worked:
Server module:
import wixData from 'wix-data';
export async function getUniqueValues(returnColumn, filters) {
let query = wixData.query('Courses');
filters.forEach(function (filter) {
query = query.eq(filter.field, filter.value)
});
let results = await query.find();
return getUniqueColumnValues(results.items, returnColumn);
}
function getUniqueColumnValues(items, returnColumn) {
var returnColumnValues = items.map(item => item[returnColumn]);
return [...new Set(returnColumnValues)];
}
Front-end:
import {getUniqueValues} from 'backend/serverModule';
function populateDropdown(returnDropDown, returnColumn, filters) {
getUniqueValues(returnColumn, filters)
.then(function(distinctReturnColumnValues)
{
let options = buildOptions(distinctReturnColumnValues);
options.push(_defaultOptions.find(function (item) {
return item['id'] === returnDropDown.id
}));
options.sort(function (a, b) {
return a.value.toUpperCase() === b.value.toUpperCase() ? 0 : a.value.toUpperCase() < b.value.toUpperCase() ? -1 : 1
});
returnDropDown.options = options;
returnDropDown.enable();
});
}