使用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
或其他内容?