在此 Javascript 中,除了 presenceRef.onDisconnect().set('no more');
语句之外,一切正常,该语句会在我的文件中生成 PERMISSION_DENIED: Permission returned控制台。
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/[Project名称]/database/firestore/rules
...我已经打开了所有内容,如下:
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 的一种方法,它允许您在客户端与数据库服务器断开连接时写入或清除数据。
因此,如果您打算 use it ,然后将实时数据库的规则更改为以下内容:
{
"rules": {
".read": true,
".write": true
}
}
仅在开发中使用这些规则。
关于javascript - 使用 onDisconnect() 拒绝 Firestore/Firebase 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61206728/