首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >正在获取“FirebaseError:缺少权限或权限不足。”当用户拥有正确的权限时,从onsnapshot错误开始

正在获取“FirebaseError:缺少权限或权限不足。”当用户拥有正确的权限时,从onsnapshot错误开始
EN

Stack Overflow用户
提问于 2019-05-09 18:41:38
回答 1查看 12.6K关注 0票数 3

我正在尝试创建一个文档引用,设置一个onsnapshot监听器,保存文档,然后上传一个文件,该文件将触发一个云函数,该函数将对我正在收听的文档进行更新。但是在快照运行一次(我猜是初始状态)之后,onSnapshot会给出一个权限错误'FirebaseError: Missing or insufficient permissions.'

我已经尝试在firebase控制台中运行访问和写入数据的模拟,并且运行正常,没有任何错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = window.firebase.firestore()
const newBaseRef = db.collection('base').doc()

newBaseRef.onSnapshot(doc => {
  console.log('Current data: ', doc.data())
}, function (error) {
  throw error // THIS ALWAYS GETS HIT
})

newBaseRef.set({
  uid: window.firebase.auth().currentUser.uid,
  createdAt: window.firebase.firestore.FieldValue.serverTimestamp()
})

以下是我的安全规则

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service cloud.firestore {
  match /databases/{database}/documents {
    match /printset/{document=**} {
      allow read, update, delete: if request.auth.uid == resource.data.uid
      allow create: if request.auth.uid != null;
    }

    match /file/{document=**} {
      allow read, update, delete: if request.auth.uid == resource.data.uid
      allow create: if request.auth.uid != null;
    }

    match /base/{document=**} {
      allow read, update, delete: if request.auth.uid == resource.data.uid
      allow create: if request.auth.uid != null;
    }
  }
}

我不期望运行错误回调

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 08:33:28

newBaseRef.set()返回Promise

因此,当调用newBaseRef.onSnapshot()时,newBaseRef.data().uid还没有设置。

请参见:

应该在Promise.resolve()之后调用newBaseRef.onSnapshot()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = window.firebase.firestore()
const newBaseRef = db.collection('base').doc()


newBaseRef.set({
  uid: window.firebase.auth().currentUser.uid,
  createdAt: window.firebase.firestore.FieldValue.serverTimestamp()
}).then(() => {
  newBaseRef.onSnapshot(doc => {
    console.log('Current data: ', doc.data())
  }, function (error) {
    throw error // THIS ALWAYS GETS HIT
  })
})

还有更多。

如果你只想插入,那么你应该使用newBaseRef.add({})

如果你想插入或替换所有数据,那么你应该使用newBaseRef.set({})

如果你想更新或者更新,那么你应该使用newBaseRef.set({}, {merge, true})

如果你只想更新,那么你应该使用newBaseRef.update({})

如果您想要更新或更新,则将您的安全规则更改为以下设置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service cloud.firestore {
  match /databases/{database}/documents {

    match /printset/{document=**} {
      allow read, update, delete: if request.auth.uid == resource.data.uid
      allow create: if request.auth.uid != null;
    }

    match /file/{document=**} {
      allow read, update, delete: if request.auth.uid == resource.data.uid
      allow create: if request.auth.uid != null;
    }

    match /base/{document=**} {
      allow read, delete: if request.auth.uid == resource.data.uid
      allow update: if resource == null || request.auth.uid == resource.data.uid
      allow create: if request.auth.uid != null;
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56065707

复制
相关文章
mysql查看用户的权限(sql查看用户拥有的权限)
mysql数据库授权链接如下: https://blog.csdn.net/GX_1_11_real/article/details/81200566
全栈程序员站长
2022/07/30
3.5K0
mysql查看用户的权限(sql查看用户拥有的权限)
ora 01031 权限不足_sql权限不足
解决办法:把自己所有的权限都给用户B。 grant all privileges to B;
全栈程序员站长
2022/08/03
2K0
ora 01031 权限不足_sql权限不足
权限不足
create or replace procedure createTS(tname in varchar2)
全栈程序员站长
2022/07/07
9990
在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)
在 Windows 系统中,管理员权限和非管理员权限运行的程序之间不能使用 Windows 提供的通信机制进行通信。对于部分文件夹(ProgramData),管理员权限创建的文件是不能以非管理员权限修改和删除的。
walterlv
2023/10/23
2K0
windows-System权限获取任意用户权限目录-举例GetTempPath
在System权限启动我们的程序之后.如果程序内部使用了GetTempPath()函数.或者使用了其它跟用户权限有关的函数.则获取的路径不是你想要的. 比如 你在System权限下使用了GetTempPath() 那么获取的temp路径有可能就是 "C:\Windows\Temp" 而我们想要获取的路径则是 "C:\user\xxx\Appdata\local\temp" 这里贴出代码. 原理就是 使用用户权限的Token 配合函数ExpandEnvironmentStringsForUserW 函数来获取.
IBinary
2021/04/28
1.5K0
超级用户权限root_小米开发版root权限获取
小米手机6X有没有办法开启ROOT超级权限?我们知道,安卓手机有ROOT超级权限,如果手机开启root相关权限,能够实现更好的功能,举例子,我们部门的营销部门,使用一些营销软件都需要在ROOT超级权限下执行,如果手机没办法获的root的权限,即没办法正常使用具体的功能。
全栈程序员站长
2022/11/15
4.5K0
超级用户权限root_小米开发版root权限获取
Linux为用户添加sudo权限的正确姿势
我们知道root用户可以直接执行所有命令,主用户可以通过sudo命令假装自己是root用户,而一般用户连sudo都用不了。现在我们的目的就是让这个一般用户也能像正常用户一样使用sudo命令。
mythsman
2022/11/14
2.9K0
Docker daemon socket权限不足
Manage Docker as a non-root user 即:管理Docker的不是root用户
py3study
2020/04/17
2K0
Android获取超级用户权限删除文件
获取超级用户权限的windows代码如下: 打开命令提示符,进入sdk\platform-tools文件夹,找到adb.exe。然后输入如下代码:
提莫队长
2019/02/21
1.7K0
Oracle 用户、对象权限、系统权限
用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作
Leshami
2018/08/07
3K0
windows用户权限分配(进程权限)
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)) { TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1 ; ::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid); AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
全栈程序员站长
2022/07/28
2.7K0
权限校验错误
tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址,在智能合约中使用此变量进行身份验证可能会使合约受到类似网络钓鱼的攻击。
Al1ex
2021/07/21
1.5K0
在【用户、角色、权限】模块中如何查询不拥有某角色的用户
用户与角色是多对多的关系, 一个角色可以被赋予给多个用户,一个用户也可以拥有多个角色; 查询不拥有某角色的所有用户, 如果用leftjoin查询,会造成重复的记录: 举例错误的做法:
liulun
2019/07/19
2.7K0
linux的用户权限
最近一个同事把他的服务器分给我了一块,咿呀,万分激动之下,准备自己要搞一个博客!然而,每次一操作点啥,就给我报“permission deny”
用户3258338
2019/07/19
17.4K0
linux的用户权限
Spring Security 获取当前用户页面代码获取用户对象代码获取权限
页面 如果只是想从页面上显示当前登陆的用户名,可以直接使用Spring Security提供的taglib。 <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> <div>username : <sec:authentication property="name"/></div> <sec:authentication property="name" var="a_name"/> <sec:auth
孙亖
2018/06/07
2.7K0
Linux用户权限
文件权限 ls命令结果介绍  -l中显示的内容如下: -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc - 第一个字符代表文件(-)、目录(d),链接(l)- 10个字符确定不同用户能对文件干什么 - 其余字符每3个一组(rwx),读(r)、写(w)、执行(x) - 第一组rwx:文件所有者的权限是读、写和执行 - 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行 - 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行 也可用数字表示为:r=4
人生不如戏
2018/05/30
15.1K0
linux添加用户及用户权限管理命令_docker用户权限
useradd -s /etc/shell username 指定用户所使用的shell(该用户的shell就为/etc/shell)
全栈程序员站长
2022/11/18
11.8K0
linux添加用户及用户权限管理命令_docker用户权限
【Android 逆向】Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )
Linux 是基于文件的系统 , 内存 , 设备 , 各种机制等 , 一切皆文件 ;
韩曙亮
2023/03/29
9.9K0
【Android 逆向】Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )
Linux用户权限
文件权限 chmod 改变文件或目录的权限 chmod 755 abc:赋予abc权限rwxr-xr-x chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限 chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限 chmod a+r abc:给所有用户添加读的权限 #设置文件夹权限 chown -R username /var/www/html/ #-R 表示包括其子文件夹的修改 777 为文件夹设置权限 #修改文
Vine
2022/06/06
14.3K0
oracle赋予dba用户权限_oracle给用户dba权限
很多时候我们用拥有DBA权限的用户 从oracle数据库导出数据,那么再导入新的数据库时就还得需要DBA权限的用户,下面是如何创建一个新用户并授予DBA权限命令。
全栈程序员站长
2022/11/09
6.7K0

相似问题

获取错误FirebaseError:缺少权限或权限不足

120

(in promise) FirebaseError:缺少权限或权限不足

117

FirebaseError:[代码=权限拒绝]:缺少权限或权限不足

50

FirebaseError:缺少或不足的权限。只读

13

FirebaseError:缺少权限或权限不足。update或create

114
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文