如果交易未发送request.auth.uid?

时间:2018-10-12 09:08:24

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

使用Google Cloud FireStore为我的交易获取PERMISSION_DENIED: Missing or insufficient permissions。如果我在交易之外执行完全相同的操作,则效果很好。

这是交易失败的简单示例:

await db.runTransaction(async transaction => {
    const post = await transaction.get(pendingPostDocRef);
    return transaction.delete(pendingPostDocRef);
});

如果我在事务之外执行相同的操作,则它会起作用,就像这样:

const post = await pendingPostDocRef.get();
await pendingPostDocRef.delete();

这是该交易的安全规则:

service cloud.firestore {
  match /databases/{database}/documents {
      [...]
      match /pending/{post} {
        allow read: if request.auth.uid != null;
        allow write: if request.auth.uid == '<a-specific-user-id>';
      }
    }
  }
}

谁能解释为什么会有区别?似乎交易没有发送request.auth.uid或其他内容?

0 个答案:

没有答案