使用onDisconnect()拒绝Firestore/Firebase权限



在这个Javascript中,除了presenceRef.onDisconnect().set('no more');语句外,其他一切都在工作,它在控制台中生成PERMISSION_DENIED:PERMISSION DENIED

firebase.auth().onAuthStateChanged(function(user){
if (user){
uid=user.uid;
db.collection('user').doc(uid).set({
custnum: parseInt(custnum),
email: email,
password: password,
screenname: screenname,
admin: parseInt(admin),
uid: uid
})
.then(function(){
var docpath='/user/'+uid+'/email';
var presenceRef=firebase.database().ref(docpath);
presenceRef.onDisconnect().set('no more');
})
.catch(function(error){
console.log('Error writing document: ' + error);
});
} else {
db.collection('user').doc(uid).delete({
})
.then(function(){
//success
})
.catch(function(error){
console.log('Error writing document: ' + error);
});
uid='';
}
});

当我连接到此URL时,在"规则"选项卡中:

https://console.firebase.google.com/project/[项目名称]/数据库/消防仓库/规则

我打开了一切,如下所示:

rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}

我可以使用.set写入数据库。为什么我不能使用onDisconnect((来设置不同的值.db指的是firebase.firestore((连接。Firebase和Firestore之间有什么我不理解的事情吗?

onDisconnect()是用于实时数据库而非Firestore的方法,它允许您在客户端与数据库服务器断开连接时写入或清除数据。

因此,如果您打算使用它,请将实时数据库的规则更改为以下内容:

{
"rules": {
".read": true,
".write": true
}
}

只在开发中使用这些规则。

最新更新