firestore交易引发更新规则错误,该规则仅允许一个特定字段

时间:2018-09-26 18:19:19

标签: firebase transactions google-cloud-firestore firebase-security-rules

通过在网络上执行firestore runTransaction函数, 发生以下错误。

firestore.googleapis.com/v1beta1/projects/myproject/databases/(默认)/ documents:commit:1 POST https://firestore.googleapis.com/v1beta1/projects/myproject/databases/(default)/documents:commit 403

我只允许每个人更新一个字段,而其他则是登录用户的字段。

因此更新规则将使用下一个。

allow update: if request.resource.data.keys().hasOnly(["numPlayed"]) 
|| request.auth.uid != null;

和类似的交易代码

this.db.runTransaction(function(t) {
    return t.get(pubRef)
    .then(function(pub) {
        var numPlayed = pub.data().numPlayed + 1;
        t.update(pubRef, { numPlayed: numPlayed });
        return numPlayed;
    });
})

为什么会发生错误?

1 个答案:

答案 0 :(得分:0)

我终于明白了原因。 “ runTransaction”要求写权限不像更新那样分散。