Моя база данных выглядит следующим образом
workers: {
worker1ID: {
employerId: '-1'
ownerId: 'asdafnb13214'
name: Tony
etc...
}
},
companies: {
company1ID: {
ownerId: 'LPqNASKAN2342as'
companyName: Good Company
employeeIDs: {
worker25Id,
worker26Id
}
etc...
}
}
Как компания, я пытаюсь добавить сотрудника в свою компанию с помощью workerId. Мои текущие правила записи в рабочую корзину: ...
"rules": {
"workers": {
".read": "auth != null",
"$worker": {
".write":
//allow write if authenticated AND
"auth !== null &&
//node doesn't exist OR (it exists AND the authenticated user is the worker)
(!data.exists() || data.child('employerId').val() === auth.uid) ||
//OR the authenticated user is the company that is trying to add the worker to their company
(root.child('companies').child('$company').child('ownerId').val() === auth.uid)"
}
}
}
Третья строка аутентификации не работает. Я знаю, что это проблема с использованием подстановочного знака $company
, потому что когда я жестко закодировал company1ID
, я смог отредактировать employerId
из worker1ID
Как я могу найти во всех компаниях компанию, чьиownerId === auth.uid
. Если это невозможно, в моей функции fetch()
у меня есть companyId. Есть ли способ, которым я могу отправить этот companyID через URL, похожий на ?auth=${token}
, чтобы я мог просто вставить это в правило.