Получить значение из Cloud Firebase и показать элемент зависит от оператора if / else - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь получить значение из базы данных Cloud Firebase и использовать оператор if / else, чтобы показать или скрыть некоторые элементы div, в зависимости от этого значения.Моя база данных работает нормально, я могу сохранять, читать и обрабатывать данные, но не могу найти решение, где мне следует использовать эту условную логику.Могу ли я сделать это с помощью этого кода, кто-нибудь может написать мне, где проблема, почему это не работает?

firebase.initializeApp(config);
const db = firebase.firestore();

db.collection('ringnum').get().then((snapshot) => {
    snapshot.docs.forEach(doc => {
        renderRingNumbers(doc);
    })
})

db.collection('ringnum').get().then((snapshot) => {
    if (snapshot=='1'){
        document.getElementById('ring').style.display='block';
        document.getElementById('ring2').style.display='none';
    }else if (snapshot=='2'){
        document.getElementById('ring').style.display='block';
        document.getElementById('ring2').style.display='block';
    }
})

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Спасибо за помощь, мой код выглядит сейчас:

db.collection('ringnum').get().then((snapshot) => {
    snapshot.docs.forEach(doc => {
        renderRingNumbers(doc);
        var data = doc.data();
        if(data.ringSelect == 1){
            document.getElementById('ring').style.display='block';
            document.getElementById('ring2').style.display='none';
        }else if(data.ringSelect == 2){
            document.getElementById('ring').style.display='block';
            document.getElementById('ring2').style.display='block';
        }
    })
})

Я потерял слушателя в реальном времени, мой код был:

db.collection('ringnum').onSnapshot(snapshot => {
    let changes = snapshot.docChanges();
    changes.forEach( change => {
        if(change.type == 'added'){
            renderRingNumbers(change.doc)
        } else if (change.type == 'removed'){
            let li = ringnumList.querySelector('[data-id=' + change.doc.id + ']');
            ringnumList.removeChild(li);
        }
    })

Итак, любой знает, как его отредактировать, чтобы получитьслушатель в реальном времени для показа / скрытия divs?Спасибо!

0 голосов
/ 16 февраля 2019

Вы можете использовать некоторую условную логику, основанную на data., но вы извлекаете data и применяете свою логику к атрибуту.Если вы хотите показать / скрыть элементы div на основе атрибута someField, вы можете сделать что-то вроде:

query.get().then((snapshot) => {
    snapshot.forEach((doc) => {
        var data = doc.data();
        if(data.someField == 1){
            document.getElementById('ring').style.display='block';
            document.getElementById('ring2').style.display='none';
        }else if(data.someField == 2){
            document.getElementById('ring').style.display='none';
            document.getElementById('ring2').style.display='block';
        }

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