Недавно я создал веб-сайт на Wix, который требует, чтобы вы авторизовались, чтобы получить доступ к странице участника «Клиентского портала», которую я создал. Страница клиентского портала по сути представляет собой базу данных (коллекцию) в виде таблицы, которая позволяет пользователям выбирать и просматривать документы, относящиеся к их компании. Коллекция ClientPortal2 имеет 3 поля: имя документа, фактический документ и компания, с которой он связан. База данных клиентского портала показана ниже. Я хочу, чтобы пользователи могли видеть только те документы, которые связаны с их компанией, поэтому я создал другую коллекцию под названием Users2. Users2 ссылается на всех пользователей, у которых есть учетная запись, в поле с несколькими ссылками (электронная почта) и на компанию, на которую они работают в другой области (компания). Users2 также показан ниже. Таким образом, я хочу, чтобы пользователи могли просматривать ТОЛЬКО документы своей компании, а не чужие.
CLIENTPORTAL2
Users2
Код, который я написал для сортировки документов на основе дочерней компании определенного пользователя, выглядит следующим образом:
import wixUsers from 'wix-users';
import wixData from 'wix-data';
$w.onReady(function () {
let user = wixUsers.currentUser;
user.getEmail()
.then( (currentEmail) => {
let userEmail = currentEmail; // "user@something.com"
} );
user.getEmail()
.then( (currentEmail) => {
console.log(currentEmail);
wixData.query('Users2').include('email')
.find().then((results) => {
for (var i=0;i<results.items.length ;i++) {
for (var j=0;j<results.items[i].email.length ;j++) {
let userLoginEmail = results.items[i].email[j].loginEmail;
if (userLoginEmail === currentEmail){
let userCompany = results.items[i].company
filter(userCompany);
}
}
}
})
})
});
function filter(Company){
wixData.query('CLIENTPORTAL2').eq("company", Company)
.find().then( (results) => {
let tableData = results.items;
$w('#table1').rows = tableData;
console.log(results.items);
console.log(Company);
})
}
Код выполняет запрос к «Users2», просматривает адреса электронной почты всех пользователей и сравнивает их с адресом текущего авторизованного пользователя. Затем он запускает запрос на ClientPortal2, используя аффилированную с пользователями компанию, которую он только что нашел в первом запросе. В таблице (# table1), отображаемой на странице клиентского портала, теперь отображаются документы, относящиеся к компании, в которой работает пользователь. Так, например, если «dew0025@auburn.edu» вошел на сайт, этот пользователь сможет просматривать только документы в таблице ниже, потому что этот пользователь ограничен «Компания 1»
table1 отображается на странице участников клиентского портала
Таким образом, этот код работает хорошо, но работает только на странице предварительного просмотра, а не на опубликованной странице в реальном времени. Что я делаю не так? Есть ли более простой способ сделать это или я ошибаюсь? Заранее спасибо.