Flutter Cloud Firestore orderBy e limite de problemas

3
Thomas D. Frøysa 2019-12-06 13:11.

Eu tenho uma coleção no Cloud Firestore que contém muitos documentos que têm um valor de carimbo de data / hora para quando o documento foi criado, junto com mais algumas informações. Estou tendo um comportamento muito estranho, que simplesmente não consigo entender.

O que estou tentando fazer é:

  • Encontre o documento mais recente com base no valor do carimbo de data / hora
  • Encontre o documento mais antigo que é mais recente que 1 hora atrás, 24 horas atrás e 7 dias atrás.

Eu tenho essas perguntas:

var snapshotNow = await Firestore.instance
    .collection(stationName)
    .orderBy('servertime', descending: true)
    .limit(1)
    .snapshots()
    .first;

E para encontrar 1 hora atrás e assim por diante:

var dateTime = DateTime.now().subtract(duration);

E para recuperar o documento de 1 hora atrás:

var snapshotThen = await Firestore.instance
    .collection(stationName)
    .where('servertime', isGreaterThan: dateTime)
    .orderBy('servertime', descending: false)
    .limit(1)
    .snapshots()
    .first;

Por alguma razão, essas duas consultas muito diferentes recuperam o mesmo documento a cada vez. Ou seja: recebo o documento mais recente da coleção de ambas as consultas.

Tentei fazer algumas coisas para descobrir qual é o problema:

1) Não olhando para a data, removendo o .wherena consulta. Isso deve tornar- snapshotThense o documento mais antigo da coleção. O que recebi de fato foi o documento mais novo da coleção. Isso significa que o mesmo documento foi retornado como o primeiro documento ao classificar em ordem crescente e decrescente.

2) Aumentando o limite para mais de 1 documento. Ao aumentar o limite de limit(1)para limit(10). Para a classificação ascendente, isso retorna consistentemente os 10 documentos mais recentes (conforme o esperado). Para a ordem decrescente, algo estranho acontece. Espero que ele retorne os 10 documentos mais antigos da coleção. O que ele retorna é uma de duas coisas; ou 1) os 10 documentos mais recentes, classificados do mais antigo para o mais recente, ou 2) apenas o documento mais recente (não uma lista de 10 documentos, mas uma lista de apenas 1 documento).

Qualquer ajuda é muito apreciada, venho trabalhando nisso há muito tempo e simplesmente não consigo entender onde está o problema. O que acho mais frustrante é que o comportamento muda; às vezes recebo apenas 1 documento, às vezes recebo 10 documentos, todos com a mesma consulta.

1 answers

2
Waelmas 2019-12-10 03:44.

Do meu ponto de vista, o problema está no formato do carimbo de data / hora do Firestore.

Um exemplo de carimbo de data / hora Firestore é o seguinte:

Timestamp { _seconds: 1575888466, _nanoseconds: 725000000 }

Eu repliquei o que você descreveu e funciona bem usando o Firestore.Timestamp

Você pode usar Firestore.Timestamp.now()para obter a hora atual no formato de carimbo de data / hora do Firestore e Firestore.Timestamp.fromMillis(Date.now()-[MS]), onde [MS] é a hora que você deseja subtrair em milissegundos.

1 hora = 3600000 ms

1 dia = 86400000 ms

Portanto, um exemplo seria o seguinte: (estou usando Node.js)

let postsRef = db.collection('dates');

const hour= 3600000;
const fullday= 86400000;

var firenow = Firestore.Timestamp.now()
var firepast = Firestore.Timestamp.fromMillis(Date.now()-fullday);

var range1 = postsRef.where("time", ">=", firepast).where("time", "<=", firenow);
let query1 = range1.get()
  .then(snapshot => {
    if (snapshot.empty) {
      console.log('No matching documents.');
      return;
    }
    snapshot.forEach(doc => {
      console.log(doc.id, '=>', doc.data());
    });
  })
  .catch(err => {
    console.log('Error getting documents', err);
  });

O código acima fornecerá os Documentos com carimbo de data / hora da última hora, substituindo hourpor fulldayfornecerá as últimas 24 horas.

Related questions

MORE COOL STUFF

Cate Blanchett dormiu com o marido depois de 3 dias juntos e ainda está casada com ele 25 anos depois

Cate Blanchett dormiu com o marido depois de 3 dias juntos e ainda está casada com ele 25 anos depois

Cate Blanchett desafiou os conselhos típicos de namoro quando conheceu o marido.

Por que Michael Sheen é um ator sem fins lucrativos

Por que Michael Sheen é um ator sem fins lucrativos

Michael Sheen é um ator sem fins lucrativos, mas o que exatamente isso significa?

Hallmark Star Colin Egglesfield Pratos Emocionantes Encontros de Fãs no RomaDrama Live! [Exclusivo]

Hallmark Star Colin Egglesfield Pratos Emocionantes Encontros de Fãs no RomaDrama Live! [Exclusivo]

A estrela da Hallmark Colin Egglesfield falou sobre emocionantes encontros com fãs no RomaDrama Live! além de seu programa INSPIRE na convenção.

Por que você não pode transmitir 'Exposição do Norte' online

Por que você não pode transmitir 'Exposição do Norte' online

Você terá que tirar o pó de um Blu-ray ou DVD player para ver por que Northern Exposure se tornou um dos programas mais populares dos anos 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

Como a matéria branca ajuda a função da matéria cinzenta do cérebro

Como a matéria branca ajuda a função da matéria cinzenta do cérebro

Todos nós já ouvimos falar da massa cinzenta do cérebro, mas e a massa branca? O que isso faz?

Doe seu cabelo para ajudar a manter nossa água limpa

Doe seu cabelo para ajudar a manter nossa água limpa

Aparas de cabelo de salões e doações pessoais podem ser reaproveitadas como tapetes que absorvem derramamentos de óleo e ajudam a proteger o meio ambiente.

Um olhar sobre os casamentos mais memoráveis ​​da Casa Branca

Um olhar sobre os casamentos mais memoráveis ​​da Casa Branca

Apenas algumas pessoas se casaram na Casa Branca nos últimos 200 anos. Quem eram eles e o que é necessário para marcar um casamento lá?

Esta semana no mercado de trabalho: a verdade na publicidade

Esta semana no mercado de trabalho: a verdade na publicidade

CITAÇÃO | “Recebemos mais de dois milhões de visitantes únicos neste stream para assistir, não sei o quê, nada.” - Todd Howard da Bethesda Game Studios descreve a transmissão ao vivo de 24 horas da empresa de uma estátua do Vault Boy e uma TV com um gráfico “Please Stand By” levando à revelação do teaser Fallout 76.

Wall Street Journal se preocupa com o fato de que profissionais do sexo "ilícitas" prejudicam sites de namoro de milhões de dólares

Wall Street Journal se preocupa com o fato de que profissionais do sexo "ilícitas" prejudicam sites de namoro de milhões de dólares

O Wall Street Journal de hoje tem um artigo sobre o impacto potencialmente negativo da nova lei “anti-tráfico” do nosso país - não sobre as trabalhadoras do sexo, veja bem, mas sobre o grande negócio do namoro online. Sim, a Lei de Permitir que Estados e Vítimas Combatam o Tráfico de Sexo Online (FOSTA) está colocando em risco a subsistência e a vida de profissionais do sexo - mas, ah, alguém não pensará nas empresas multimilionárias? Como o artigo adverte seus leitores conservadores e preocupados com o dinheiro, “O negócio florescente de namoro online enfrenta novos riscos de uma lei projetada para prevenir o tráfico sexual e a prostituição.

O cantor Scott Hutchison do Frightened Rabbit desapareceu

O cantor Scott Hutchison do Frightened Rabbit desapareceu

Scott Hutchison, vocalista da banda indie escocesa Frightened Rabbit, foi relatado como desaparecido por sua família. A BBC relata que ele está atualmente em Edimburgo e a polícia está chegando ao público para obter qualquer informação sobre sua localização.

Me chame de 'Mestre': Ex diz que o ex-procurador-geral de Nova York estava interessado em interpretar papéis racistas durante o sexo

Me chame de 'Mestre': Ex diz que o ex-procurador-geral de Nova York estava interessado em interpretar papéis racistas durante o sexo

O agora ex-procurador-geral de Nova York Eric Schneiderman em 2017 Na segunda-feira, o New Yorker publicou uma exposição de mais de 6.000 palavras sobre o agora ex-procurador-geral de Nova York Eric Schneiderman, na qual pelo menos quatro mulheres em relacionamentos anteriores com ele acusaram a operadora democrata de abuso físico, sexual, verbal e emocional. Horas depois, Schneiderman negou as acusações, mas renunciou ao cargo.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Carne de porco Mapo de Dawn Burrell e homus de Edamame

Carne de porco Mapo de Dawn Burrell e homus de Edamame

"Esta é uma indústria dominada por homens, e estou feliz por ser uma das pessoas que quebrou o molde para ajudar as mulheres de cor", diz Top Chef: finalista de Portland e chef-parceiro do final de agosto em Houston. "Muitas vezes somos ignorados e às vezes não ensinados, mas isso vai mudar."

Kate Middleton passa um dia à beira da água em Londres, além de Jennifer Lopez, Julianne Hough e mais

Kate Middleton passa um dia à beira da água em Londres, além de Jennifer Lopez, Julianne Hough e mais

Kate Middleton passa um dia na água em Londres, além de Jennifer Lopez, Julianne Hough e muito mais. De Hollywood a Nova York e em todos os lugares, veja o que suas estrelas favoritas estão fazendo!

Jovem de 17 anos esfaqueado até a morte enquanto outros 4 ficaram feridos em um ataque de faca no rio Wisconsin

Jovem de 17 anos esfaqueado até a morte enquanto outros 4 ficaram feridos em um ataque de faca no rio Wisconsin

Investigadores estão investigando se o grupo e o suspeito se conheciam antes do ataque

Aterrissagens na pista

Aterrissagens na pista

O final do verão e o outono são estações nostálgicas. Os postes de luz lançam sua luz sobre as ruas escorregadias pela chuva, e as folhas sob os pés – vermelho-alaranjado nas sombras do crepúsculo – são um lembrete de dias passados.

Imagine criar uma estratégia de conteúdo que realmente CONVERTE. É possível.

Imagine criar uma estratégia de conteúdo que realmente CONVERTE. É possível.

Em 2021, encorajo você a repensar tudo o que sabe sobre os clientes que atende e as histórias que conta a eles. Dê um passo para trás.

Uma perda gigantesca abriu meu coração para o amor

Uma perda gigantesca abriu meu coração para o amor

No dia do aniversário de 9 anos de Felix The Cat, lembro-me de uma das maiores perdas da minha vida adulta – minha Sophie em 2013. Escrevi este ensaio e o compartilhei brevemente nesta plataforma em 2013.

Quando você não pode ser a pessoa que a internet quer que você seja

Quando você não pode ser a pessoa que a internet quer que você seja

Odeio a palavra “naufrágio”. As pessoas se confortam em sua própria bússola moral e, ao fazê-lo, encontram-se julgando.

Language