Как ограничить снимок одним документом? - PullRequest
0 голосов
/ 03 мая 2019

У меня настроен прослушиватель в режиме реального времени, я заказал данные, но я хочу получить только самое последнее значение данных.

Я пытался добавить .limit (1), но он не работает

const callSheet = document.querySelector('#call-sheet');
const form = document.querySelector('#add-call-form');

// create element and render calls
function renderCall(doc){
    // tags
    // unique firestore document id
    let li = document.createElement('li');
    let van = document.createElement('span');
    let time = document.createElement('span');
    let ete1 = document.createElement('span');
    let ete2 = document.createElement('span');

    if (doc.data().van == 3) {
        // set document id
        li.setAttribute('data-id', doc.id);

        // set other data fields
        van.innerHTML = "Van " + doc.data().van + '<br />'
        time.innerHTML = "Last dispatched at " + doc.data().time + '<br />';
        ete1.textContent = "ETE: " + doc.data().ete1 + " - " + doc.data().ete2 + " minutes";

        li.appendChild(van);
        li.appendChild(time);
        li.appendChild(ete1);

        callSheet.appendChild(li);
    }
}

// retrieve the Call Information collection
// snapshot is what you get back from the method call 
// (a representation of the different data in the collection)
// real-time listener:
db.collection('Call Information').orderBy("time", "desc").limit(1).onSnapshot(snapshot => {
    let changes = snapshot.docChanges();
    changes.forEach(change => {
        if(change.type == 'added'){
            renderCall(change.doc)
        } else if (change.type == 'removed'){
            let li = callSheet.querySelector('[data-id=' + change.doc.id + ']');
            callSheet.removeChild(li);
        }
    })
})

Я пытаюсь получить последний 1 документ для каждого фургона, но даже если в базе данных есть документы для каждого фургона, когда я изменяю if (doc.data().van == 3) на любое другое значение (например, 1 или2), данные не отображаются.Если я удаляю orderBy и limit, все значения данных отображаются нормально для каждого фургона.

1 Ответ

0 голосов
/ 03 мая 2019

Вы имеете в виду limit(1)?

db.collection('Call Information')
  .orderBy("time", "desc")
  .limit(1)
  .onSnapshot(snapshot => {

См. Документацию Firestore для заказа и ограничения данных .

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