Пожарная служба по правилу безопасности - PullRequest
0 голосов
/ 27 августа 2018

Я только что начал использовать Firestore и пытаюсь создать правило безопасности для поддержки запросов такого типа из моего приложения (Android / kotlin)

firestoreDb.collection("messages").whereEqualTo("room_id", "c_1")
    .orderBy("timestamp", Query.Direction.ASCENDING)

Структура моей базы данных:

room
   -{roomId}
      -members [] //this is an array of strings
messages
   -{messageId}
      -timestamp
      -room_id
      -message_text

Правило безопасности выглядит следующим образом:

service cloud.firestore {
  match /databases/{database}/documents {
    match /messages/{messageId} {
        allow read: if request.auth.uid in get(/databases/$(database)/documents/rooms/$(resource.data.room_id)).data.members && 
        request.query.orderBy == "timestamp"
    }
  }
}

Если я не использую заказ, то все работает нормально, и я получаю успешный ответ. Однако после применения orderBy в коде мне нужно добавить правило orderBy в правила безопасности firestore. К сожалению, я не смог найти ни одного примера синтаксиса, как это должно быть определено.

Это официальная документация Я использую в качестве справочного материала, но есть только пример для request.query.limit, из которого неясно, как должен работать request.query.orderBy.

Любая помощь высоко ценится Приветствия

1 Ответ

0 голосов
/ 20 апреля 2019

Извините за поздний ответ.

Мы должны обработать request.query.orderBy имеет Map.

request.query.orderBy.timestamp == 'ASC'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...