- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个文档引用,设置一个 onsnapshot 监听器,保存文档,然后上传一个文件,这将触发一个云功能,该功能将更新我正在收听的文档。但是 onSnapshot
在快照运行一次后(我猜是初始状态)给出了 'FirebaseError: Missing or insufficient permissions.'
的权限错误。
我已经尝试运行在 firebase 控制台中访问和写入数据的模拟,它没有任何错误地运行
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()
})
这是我的安全规则
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;
}
}
}
我不希望错误回调运行
最佳答案
newBaseRef.set()
返回 Promise
。
所以当 newBaseRef.onSnapshot()
被调用时,newBaseRef.data().uid
还没有设置。
参见:
您应该在 Promise.resolve()
之后调用 newBaseRef.onSnapshot()
。
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({})
。
如果你想 InsertUpdate 或 Update 那么你应该使用 newBaseRef.set({}, {merge, true})
。
如果您只想更新,那么您应该使用 newBaseRef.update({})
。
如果您想要 InsertUpdate 或 Update,请将您的安全规则更改为以下设置。
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;
}
}
}
关于firebase - 当用户具有正确的权限时从 onsnapshot 错误中获取 'FirebaseError: Missing or insufficient permissions.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065707/
我在 Firebase 中遇到了此错误,提示请求太多。我读过 Nest api 说他们限制了请求数量以避免设备上的电池耗尽。但在官方 Nest Android 应用程序上,您可以毫无问题地打开/关闭(
我正在编写一个更新到 Firebase 的应用程序,但我无法编写 oncancelled 函数,因为它无法解析符号 FirebaseError。 我的代码如下: package com.test.my
我收到以下错误。我的问题是 不是 有实际错误,但事实上它是说错误是 未捕获 .如果你看看我的auth.service.ts和 sign-in.component.ts文件我发现了错误。 我的问题是,为
我有需要抛出错误的情况。错误必须匹配 FirebaseError界面。 我试图导入这个接口(interface) import { FirebaseError } from '@firebase/ut
我正在使用 Firebase 用户身份验证、电子邮件/密码方法。我想测试我是否可以更改我的电子邮件,当电子邮件正确时,我总是收到无效的电子邮件,当我继续按更改(这是启动更改电子邮件方法的按钮)时,我得
好吧,事情就是这样,我已经在 Stackoverflow 中问了几个与 Firebase 相关的问题,即使没有任何答案,我也设法让 Firebase 正常工作,并收到了一堆通知。我真的不知道我做了什么
我对编码还是很陌生,所以请耐心等待!我已经按照 youtube 类(class)构建了一个笔记应用程序并获得了一个可以使用的基础,但是我现在在删除 firebase 中的笔记时随机出现这个错误,希望有
我正在尝试使用 onSnapshot 监听器获取从 firebase 显示的帖子数据,但显示此 Firebase 错误。有人可以帮助解决这个错误 App.js: import { useState,
什么时候做firebase推送通知 firebaseAdmin.messaging().sendMulticast(message) 我得到了错误 // Error: Requested entit
我正在尝试从云 Firestore 更新预先存在的信息。这是我的规则: rules_version = '2'; service cloud.firestore { match /database
运行以下查询时出现上述错误。我以前没有见过它,找不到任何关于它的文档,而且我没有做任何不寻常的事情或我以前没有做过的事情。任何人都可以阐明它吗? const getUserProjects = asy
我是 firebase 的新手,我在控制台中有一个错误,我真的不知道它的来源: redux-firestore listener error: FirebaseError: Missing or in
我是 firebase 的新手,我在控制台中有一个错误,我真的不知道它的来源: redux-firestore listener error: FirebaseError: Missing or in
我有一个查询,我在 desc 订单中使用如下查询 const { id } = userDetails; const initialQuery = await firestore().coll
我正在使用 Firebase service worker 进行网络推送通知。目前,我正面临这个错误: Uncaught FirebaseError: Messaging: This method i
function Chat() { const [input, setInput] = useState("") const [seed, setSeed] = useState(""
我正在尝试访问我的 firestore 集合中的所有文档 const app = initializeApp(firebaseConfig); const db = getFirestore(
我正在尝试创建一个文档引用,设置一个 onsnapshot 监听器,保存文档,然后上传一个文件,这将触发一个云功能,该功能将更新我正在收听的文档。但是 onSnapshot 在快照运行一次后(我猜是初
我更新了 Firebase for Web 应用程序的 Firebase SDK。 由于更新我的应用程序不再启动并引发以下错误: 知道发生了什么吗? Uncaught (in promise) Fir
以下代码可用于在 Firebase 中创建新用户,但在浏览器中出现以下错误,您能帮我理解为什么吗? Function DocumentReference.set() called with inval
我是一名优秀的程序员,十分优秀!