У меня была эта проблема с FileSystemWatcher
и выяснилось, что следующий код решил проблему:
fsw.SynchronizingObject = this
Затем элемент управления использует текущий объект формы для решения с событиями, и поэтому будет в одной и той же теме.
Насколько я вижу, это всего лишь ошибка в симуляторе консоли. Я написал реальный (Android) код приложения в соответствии с этими правилами и смог создать и удалить контент без проблем. Проблема в том, что симулятор не понимает, как интерпретировать request.resource == null
, и в результате просто терпит неудачу.
Я напишу отчет об ошибке для этого, но вы всегда должны проверять свои правила на соответствие реальному продукту, если что-то не имеет смысла, так как трудно полностью синхронизировать симулятор.
Разобрался! Вот что работает как в производстве , так и в симуляторе:)
match /myusers/{userId}/{allPaths=**} {
allow write: if request.auth.uid == userId &&
(request.resource.size < 1 * 1024 * 1024 || request.method == 'delete');
allow read: if request.auth.uid == userId;
}
p.s. @ Дуг Стивенсон, если вы можете подать заметку изнутри, я думаю, что было бы очень полезно для других, если бы request.method
примеров с delete
, update
, get
и / или create
могли быть добавленным в документацию!
РЕДАКТИРОВАТЬ:
Кроме того, это работает как в симуляторе, так и в производстве (и, на мой взгляд, немного более читабельно, чем первый вариант). Благодаря @Doug Stevenson на кончике!
match /myusers/{userId}/{allPaths=**} {
allow write: if request.auth.uid == userId && request.resource.size < 1 * 1024 * 1024;
allow delete: if request.auth.uid == userId
allow read: if request.auth.uid == userId;
}