Как я могу отклонить все другие запросы, кроме полей ниже
код клиента:
constructor(private afs:AngularFireStore){}
updateOrder(docId:string){
return this.afs.collection("orderCollection")
.doc(docId)
.update({
updatedOn:firebase.firestore.FieldValue.serverTiimestamp(),
updatedBy:{
uid:currentuser.uid
email:currentuser.email
}
})
}
Во входящем запросе есть два поля. updatedOn
и updatedBy
. Запрос будет разрешен, только если запрос содержит только точные поля updatedOn
и updatedBy
. Если запрос содержит поля, отличные от этих двух полей, он будет отклонен.
Проблема связана с updatedBy
поле. Это поле карты. Как я могу проверить поле карты, используя правило безопасности?
Вот мое правило безопасности
match /orders/{order} {
allow read, write: if false;
allow create:if false;
allow update:if hasOnlyFields(['updatedOn'])
}
function hasOnlyFields(keys) {
return request.resource.data.keys().hasOnly(keys)
}
, используя вышеуказанную функцию, я легко могу проверить простое поле updatedOn
. Но как проверить поле карты updatedBy
, используя вышеуказанную функцию hasOnlyField
?. Если это невозможно с помощью функции hasOnlyField
, как я могу проверить, что входящий запрос имеет только указанное поле карты и простое поле?