Я не думаю, что в Firestore есть какие-либо правила, которые могли бы обеспечить это на данный момент.Но у меня есть некоторые предложения для альтернативных подходов:
1.Скопируйте идентификатор пользователя Like в Post с помощью облачной функции: Вы можете настроить облачную функцию Firebase, которая будет запускаться при операциях создания коллекции Like.Эта облачная функция записывает идентификатор пользователя в массив поста с именем like_users.Тогда у вас может быть правило, которое говорит:
разрешить создание: если request.auth.uid не в get (/ database / $ (база данных) / documents / Post / $ (request.resource.data._post).data.like_users;
(Единственная проблема с этим решением, я не думаю, что есть такая вещь, как «не в», это требует некоторых исследований)
2.Проверьте, есть ли дубликат с облачной функцией: Вы можете настроить облачную функцию Firebase, которая будет запускаться при операциях создания коллекции Like. В функции вы запрашиваете документы Like с тем же пользователем и идентификатором публикации.документ уже существует, вы удалили самый последний.
3. Перестройте базу данных: Вы можете удалить коллекцию Like и вместо нее иметь массив с именем like_users в коллекции Post.Для этого вам потребуется поместить правило, которое проверяет, существует ли пользователь в массиве «like_users», поэтому я думаю, что у нас может быть та же проблема, что и в альтернативе 1. Вам также понадобятся правила, говорящие о том, что пользователь не являетсяМы хотим обновить другие поля документа, что возможно.