В Firestore / Firebase отказано с помощью onDisconnect () - PullRequest
0 голосов
/ 14 апреля 2020

В этом 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, чего я не понимаю?

1 Ответ

1 голос
/ 14 апреля 2020

onDisconnect() - это метод для базы данных в реальном времени, а не для Firestore, он позволяет записывать или очищать данные при отключении клиента от сервера базы данных.

Поэтому, если вы имели в виду используйте его , затем измените правила для базы данных реального времени на следующее:

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

используйте только эти правила в разработке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...