Смотрите изменения в массиве в Firestore Security - PullRequest
1 голос
/ 30 апреля 2020

У меня есть коллекция reviews, где каждый отзыв содержит список uid пользователей, которым он понравился, и называется likes. Схема выглядит следующим образом:

  • рецензия (коллекция)
    • название string
    • автор uid
    • лайки [uid]
    • отправлено timestamp
  • пользователь (коллекция) - uid
    • создано timestamp
    • электронная почта string

В настоящее время я работаю с пользователем, которому нравится отзыв:

    firebase.firestore().doc(rid).update({
      likes: firebase.firestore.FieldValue.arrayUnion(this.fetchCurrentUID())
    });

И не нравится:

    firebase.firestore().doc(rid).update({
      likes: firebase.firestore.FieldValue.arrayRemove(this.fetchCurrentUID())
    });

Я только хочу позволить пользователю добавлять или удалять свои uid из likes.

Как я могу написать правило безопасности для обеспечения этого? В частности, мне нужно увидеть как список обновляется, например что-то вроде:

let newVals = request.resource.data.new_values // or something
return (newVals.length == 1 && newVals[0] == request.auth.uid)
...