Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firestore安全规则-如何检查FieldValue.increment是否有效?_Javascript_Firebase_Google Cloud Firestore_Firebase Security - Fatal编程技术网

Javascript Firestore安全规则-如何检查FieldValue.increment是否有效?

Javascript Firestore安全规则-如何检查FieldValue.increment是否有效?,javascript,firebase,google-cloud-firestore,firebase-security,Javascript,Firebase,Google Cloud Firestore,Firebase Security,我有一个firebase文档集“posts”,每个post文档包含四个字段:“likes”、“dislikes”、“super”和“total”。 我使用以下三个数据对象对每个文档执行批更新: var data_like_obj = { likes: firebase.firestore.FieldValue.increment(1), total: firebase.firestore.FieldValue.increment(1) } var data_dislike_

我有一个firebase文档集“posts”,每个post文档包含四个字段:“likes”、“dislikes”、“super”和“total”。 我使用以下三个数据对象对每个文档执行批更新:

 var data_like_obj =    {
likes: firebase.firestore.FieldValue.increment(1),
total: firebase.firestore.FieldValue.increment(1)
    }


 var data_dislike_obj =   {
dislikes: firebase.firestore.FieldValue.increment(1),
total: firebase.firestore.FieldValue.increment(-1)
    }


 var data_super_obj =   {
super: firebase.firestore.FieldValue.increment(1),
total: firebase.firestore.FieldValue.increment(4)
    }
我找不到允许我检查增量是否有效的安全规则,即仅(+1、-1或+4),而没有其他内容。我做了以下安全功能:

function validVote() {
    return ( ( isUpdatingField("super") || isUpdatingField("liked") || isUpdatingField("disliked") ) && isUpdatingField("total") ) &&
  (( isUpdatingField("disliked") && (0 <= (int(incomingData().disliked) - int(existingData().disliked)) && (int(incomingData().disliked) - int(existingData().disliked)) <= 1) ) ||
  ( isUpdatingField("super") && (0 <= (int(incomingData().super) - int(existingData().super)) && (int(incomingData().super) - int(existingData().super)) <= 1) ) ||
  ( isUpdatingField("liked") && (0 <= (int(incomingData().liked) - int(existingData().liked)) && (int(incomingData().liked) - int(existingData().liked)) <= 1) )) &&
  ( incomingData().total == incomingData().super * 4 + incomingData().liked - incomingData().disliked )
  ;
}
// Utility Funcs
function existingData() {
    return resource.data;
}
function incomingData() {
    return request.resource.data;
} 
函数validVote(){
返回((IsUpdateField(“超级”)| | IsUpdateField(“喜欢”)| | IsUpdateField(“不喜欢”)&&IsUpdateField(“总计”))&&

((IsUpdatengField(“disliked”)&&(0控制台模拟器非常有限。它基本上只是一个你可以习惯基本规则的游乐场。要进行认真的开发,你应该使用规则模拟器,它是Firebase CLI的一部分,以根据实际查询验证你的规则:


您将能够使用实际FieldValue.increment令牌发出查询,并测试更改是否有效。

这也意味着您可以将规则的连续测试设置为开发工作流程的一部分:D