В этом Javascript все работает, кроме оператора presenceRef.onDisconnect().set('no more');
, который генерирует 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/ [Project Name] / 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, чего я не понимаю?