Firebase firestore事务引发更新规则错误,该规则只允许有一个特定字段

Firebase firestore事务引发更新规则错误,该规则只允许有一个特定字段,firebase,transactions,google-cloud-firestore,firebase-security,Firebase,Transactions,Google Cloud Firestore,Firebase Security,通过在web上执行firestore runTransaction功能, 它发生在下面的错误中 firestore.googleapis.com/v1beta1/projects/myproject/databases/(默认值)/文档:提交:1个POST 403 我想只允许每个人更新一个字段,其他人是为登录用户 所以更新规则使用next allow update: if request.resource.data.keys().hasOnly(["numPlayed"]) || reques

通过在web上执行firestore runTransaction功能, 它发生在下面的错误中

firestore.googleapis.com/v1beta1/projects/myproject/databases/(默认值)/文档:提交:1个POST 403

我想只允许每个人更新一个字段,其他人是为登录用户

所以更新规则使用next

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;
    });
})
为什么会出错?

我终于找到了原因。 “runTransaction”需要写入权限,而不是类似于分区的更新