javascript - Firestore 更新数据未捕获( promise )FirebaseError : Missing or insufficient permissions

标签 javascript google-cloud-firestore firebase-security

我正在尝试从云 Firestore 更新预先存在的信息。这是我的规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

        //match logged in user doc in users collection
    match /users/{userId} {
      allow read, write, update: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}

所以我可以通过 userId 读取数据并且它在我的网站上读取正常,但是当我尝试更新它时,我收到以下错误消息

error.ts:166 Uncaught (in promise) FirebaseError: Missing or insufficient permissions.
    at new hi (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:51421)
    at https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:316738
    at br.<anonymous> (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:315592)
    at Jt (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:15221)
    at br.I.dispatchEvent (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:16063)
    at Nr.ua (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:45312)
    at nr.I.Fa (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:43219)
    at ze (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:21453)
    at qe (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:20854)
    at xe.I.Ja (https://www.gstatic.com/firebasejs/7.9.3/firebase-firestore.js:1:23264)

cloud firestore image

这是我更新账户信息的代码

const updateForm = document.querySelector('#update-form');
updateForm.addEventListener('submit', (e) => {
    e.preventDefault();

    auth.onAuthStateChanged(user => {
        console.log(user.uid);
        if(user) {
            db.collection('user').doc(user.uid).set({

                // email: updateForm['update-email'].value,
                name: updateForm['update-name'].value,
                // dob: updateForm['update-dob'].value,
                // phone: updateForm['update-phone'].value

            })
        } else {
            updateAccountInfo();
        }
    })
});

我花了 5 个小时试图找出为什么我收到错误消息但没有成功。请指出正确的方向。

最佳答案

您的代码使用的是集合名称“user”,但您的规则和数据库使用的是“users”的复数形式。它们需要完全匹配。

关于javascript - Firestore 更新数据未捕获( promise )FirebaseError : Missing or insufficient permissions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61132720/

相关文章:

firebase - 在安全规则中使用引用

javascript - 使用 Javascript 打印(部分)网页

javascript - 固定标题,然后滚动内容

firebase - 如何使用表单验证通过Flutter验证集合Firestore中是否存在文档

javascript - 如何将凭据存储到本地存储以允许 Firebase Auth 登录

firebase - Firestore 安全规则 : Where's hasOnly function?

javascript - 如何使用内联 JavaScript 或 CSS 隐藏 TD 标签?

javascript - 如何使用 jspdf-Autotable 在表格中添加自定义最后一行

firebase - Cloud Firestore Unity SDK 转换器

Firebase 安全 : read-only parent node, 但可写子节点