Как я могу добавить подписку для каждой информации в коллекции в firestore? - PullRequest
0 голосов
/ 16 января 2020

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

 db.collection("categories").onSnapshot(function(querySnapshot) {
            var categoria = [];
            querySnapshot.forEach(function(doc) {
                categoria.push(doc.data().nombre);
            });
            mandarnotificacion(categoria);
            console.log(": ", categoria.join(","));
        });   

Этот код получает все записи, и я хочу, чтобы последняя запись была обновлена. У вас есть идеи, как это сделать?

Ответы [ 2 ]

1 голос
/ 17 января 2020

Firestore не имеет внутренней концепции «последняя запись обновлена». Что вам нужно сделать, это добавить поле, которое записывает то, что вы хотите (возможно, какое-то поле метки времени), и использовать запрос, который упорядочивает на основе этого поля. Например:

db.collection("categories").orderBy("timestamp", "desc").limit(1)

Это даст вам один документ, который имеет наибольшее значение поля «метка времени». Если вы обновляете время с последним обновлением, то ваш запрос всегда даст вам последний обновленный документ.

1 голос
/ 17 января 2020

Вы должны сделать следующее:

  db.collection('categories').onSnapshot(querySnapshot => {
    querySnapshot.docChanges().forEach(change => {
      if (change.type === 'added') {
        console.log('added', change.doc.data());
      }
    });
  });

Подробнее см. В соответствующей документации . В частности, обратите внимание, что «первый снимок запроса содержит добавленные события для всех существующих документов, соответствующих запросу. Это происходит потому, что вы получаете набор изменений, которые приводят к актуальности снимка вашего запроса с исходным состоянием запроса».

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